【问题标题】:Cant change colorButtonNormal value to all buttons无法将 colorButtonNormal 值更改为所有按钮
【发布时间】:2016-01-23 03:34:06
【问题描述】:

我正在尝试以我的风格使用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

有什么建议吗?

【问题讨论】:

  • 我的代码与接受的答案相同...你能详细说明一下吗?

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


【解决方案1】:

添加到您的styles.xml

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

然后使用

android:theme="@style/ColoredButton"

作为按钮的属性之一

【讨论】:

  • 这对我不起作用,但是如果我向 ColoredButton 添加其他属性,它们确实起作用(即文本颜色)
  • Widget.AppCopmat.Buttonstyle 而不是 theme。像&lt;style name="ColoredButton" parent=""&gt; 这样的主题覆盖会产生预期的效果,而不会产生任何不可预知的副作用。
【解决方案2】:

您充气的按钮将自动翻译为AppCompatButton

无论您在哪里使用 new Button(context),都需要使用 new AppCompatButton(context) 来代替 Material 主题颜色。

【讨论】:

  • 没关系,我修好了。我有 style="?android:attr/buttonSizeSmall" 类似的东西,所以当我删除它时,一切都修复了
  • 对于 appcompat 主题,您将使用 ?buttonStyleSmall 而不是 ?android:buttonStyleSmall。请将其作为解决方案发布或删除问题。
【解决方案3】:

我在旧设备中遇到了这个问题(

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 2018-01-16
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    相关资源
    最近更新 更多