无法将colorButtonNormal值更改为所有按钮

时间:2015-10-23 14:36:30

标签: android android-5.0-lollipop android-4.4-kitkat android-styles

我试图让我的应用中的所有按钮都使用我的风格colorButtonNormal的默认颜色。

它在API 21及更高版本上运行良好,但在API 21下它只会改变某些按钮的背景,我不知道出了什么问题。

styles.xml

<resources xmlns:tools="http://schemas.android.com/tools">
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:textColorPrimary">@color/white</item>
        <item name="colorPrimary">@color/btn_login</item>
        <item name="colorPrimaryDark">@color/bg_login</item>
        <item name="colorAccent">@color/btn_login</item>
        <item name="colorButtonNormal">@color/btn_login</item>
    </style>

</resources>

V21 / styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:textColorPrimary">@color/white</item>
        <item name="android:alertDialogTheme">@style/AlertDialogCustom</item>
        <item name="android:colorButtonNormal">@color/btn_login</item>
        <item name="colorPrimary">@color/btn_login</item>
        <item name="colorPrimaryDark">@color/bg_login</item>
        <item name="colorAccent">@color/btn_login</item>
    </style>



    <style name="AlertDialogCustom" parent="Theme.AppCompat.Light.Dialog.Alert">
        <item name="android:colorPrimary">@color/btn_login</item>
        <item name="android:colorAccent">@color/btn_login</item>
        <item name="colorAccent">@color/btn_login</item>
        <item name="colorPrimary">@color/btn_login</item>
        <item name="colorPrimaryDark">@color/bg_login</item>
    </style>

    <style name="Preference" parent="Theme.AppCompat.Light">
        <item name="android:textColorPrimary">@color/black</item>
        <item name="android:colorPrimary">@color/btn_login</item>
        <item name="android:colorAccent">@color/btn_login</item>
        <item name="android:editTextColor">@color/black</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:alertDialogTheme">@style/AlertDialogCustom</item>
        <item name="colorAccent">@color/btn_login</item>
    </style>



        <style name="EditTextThemeCustom" parent="Theme.AppCompat.Light">
            <!-- Customize your theme here. -->
            <item name="android:editTextColor">@color/black</item>
            <item name="android:textColor">@color/black</item>
            <item name="colorAccent">@color/btn_login</item>
        </style>


</resources>

结果:

Lollipop

Kitkat

有什么建议吗?

3 个答案:

答案 0 :(得分:3)

添加到您的styles.xml

<style name="ColoredButton" parent="Widget.AppCompat.Button">
    <item name="colorButtonNormal">@color/btn_login</item>
</style>

然后使用

android:theme="@style/ColoredButton"

作为您的按钮之一&#39;属性

答案 1 :(得分:2)

您膨胀的按钮将自动转换为AppCompatButton

只要您拥有new Button(context),就需要使用new AppCompatButton(context)代替材质主题颜色。

答案 2 :(得分:0)

我在旧设备(&lt; 21)中遇到了这个问题,因为我的活动只是扩展了活动,当我在其中扩展AppCompatActivity时,在旧设备中它也工作得很完美。