将按钮样式添加到AppTheme无法正常工作

时间:2019-04-23 14:58:18

标签: android button styles themes

我试图向我的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属性,样式就可以工作,如下所示:

<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"

那么,为什么它直接在button属性中而不是通过我的AppTheme起作用?

2 个答案:

答案 0 :(得分:0)

1- Create new DRAWABLE RESOUCE FILE by right click on res / drawable file in your android studio

2- write code like this in it :-

<?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- open your XML file which contain this button and change background of button to the drawable you created before

答案 1 :(得分:0)

谢谢艾哈迈德·萨特(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>

如果任何人都可以更详细地解释发生这种情况的原因,将不胜感激。