向AppTheme添加按钮样式不起作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了向AppTheme添加按钮样式不起作用相关的知识,希望对你有一定的参考价值。

我试图为我的AppTheme添加自定义按钮样式,但它无法正常工作。作为参考,我在我的AppTheme中添加了一个Spinner样式,它运行正常。所以,我只需要找出我的按钮样式出错的地方。

style.xml:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:spinnerStyle">@style/mySpinnerStyle</item>
    <item name="android:buttonStyle">@style/myButtonStyle</item>
    <item name="buttonStyle">@style/myButtonStyle</item>
</style>

<style name="mySpinnerStyle" parent="@style/Widget.AppCompat.Spinner">
    <item name="overlapAnchor">true</item>
    <item name="android:background">@drawable/spinner_background</item>
    <item name="android:padding">5sp</item>
</style>

<style name="myButtonStyle" parent="@style/Widget.AppCompat.Button">
    <item name="android:background">@drawable/button_states</item>
    <item name="android:focusable">true</item>
    <item name="android:clickable">true</item>
</style>

如果需要,我可以添加我的button_states.xml文件,但是如果我将我的样式直接插入布局中的按钮属性,请知道该样式是否有效,如下所示:

<Button
    android:id="@+id/button_1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="4"
    style="@style/myButtonStyle"
    android:textSize="@dimen/text_size"
    android:text="OK" />

父布局中的声明:

android:theme="@style/AppTheme"

那么,为什么它直接在按钮属性中工作,而不是通过我的AppTheme?

答案

1-右键单击android studio中的res / drawable文件,创建新的DRAWABLE RESOURCE FILE

2-写这样的代码: -

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
    <corners
android:radius="100dp"
        />
    <solid
        android:color="#FFFFFF"

        />
    <size
        android:width="100dp"
        android:height="100dp"
        />

</shape>

3-打开包含此按钮的XML文件,并将按钮背景更改为之前创建的drawable

另一答案

感谢Ahmad Sattout的回答。

在我的按钮样式中,我从父项中删除了@style:

原版的:

<style name="myButtonStyle" parent="@style/Widget.AppCompat.Button">
    <item name="android:background">@drawable/button_states</item>
    <item name="android:focusable">true</item>
    <item name="android:clickable">true</item>
</style>

改变:

<style name="myButtonStyle" parent="Widget.AppCompat.Button">
    <item name="android:background">@drawable/button_states</item>
    <item name="android:focusable">true</item>
    <item name="android:clickable">true</item>
</style>

如果有人能够进一步详细解释为什么会发生这种情况,我们将不胜感激。

以上是关于向AppTheme添加按钮样式不起作用的主要内容,如果未能解决你的问题,请参考以下文章

片段中的按钮在android中不起作用

Android导航组件后退按钮不起作用

按钮在片段中不起作用

如何将按钮功能添加到片段中

值子文件夹内的样式资源[重复]

再次播放按钮不起作用