我试图让我的应用中的所有按钮都使用我的风格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>
结果:
和
有什么建议吗?
答案 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时,在旧设备中它也工作得很完美。