Widget.AppCompat.Button colorButtonNormal显示灰色
我有values:styles.xml
与:
<style name="AppTheme.Button" parent="Base.Widget.AppCompat.Button"> <item name="colorButtonNormal">@color/my_color</item> <item name="android:textColor">@android:color/white</item> </style>
和values-v21:styles.xml
与:
<style name="AppTheme.Button" parent="Base.Widget.AppCompat.Button"> <item name="android:colorButtonNormal">@color/my_color</item> <item name="android:textColor">@android:color/white</item> </style>
和应用程式风格
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:buttonStyle">@style/AppTheme.Button</item> </style>
但颜色显示为灰色,而不是@color/my_color
要定制一个button,只能将android:theme =“@ style / AppTheme.Button”设置为button。
<Button ...... android:theme="@style/AppTheme.Button" ...... />
像你在问题中那样定义你的风格
<style name="AppTheme.Button" parent="Base.Widget.AppCompat.Button"> ........ <item name="colorButtonNormal">@color/my_color</item> ........ </style>
[编辑]
在这里看到GitHub演示
使用Widget.AppCompat.Button.Colored
作为您的样式的父项。
<style name="RedButton" parent="Widget.AppCompat.Button.Colored"> <item name="android:textColor">@color/white</item> <item name="colorButtonNormal">@color/red</item> </style>
使用android:theme
,而不是button定义中的style
:
<Button android:theme="@style/RedButton"/>
请参阅AppCompat v21>主题和Android支持库v22.1 – AppCompat博客文章。 (注意在第二篇文章中, android:theme
在API11上得到了支持,它不会自动从父类inheritance,您必须在每个子类中指定它,这里不是一个问题,但值得一提 – 请参阅Chris Banes的post那)。
把下面的xml行放在你的“AppTheme”xml中,而不是从“AppTheme.Button”中设置它。 这适用于v22.1.1的非棒棒糖设备。 我猜这是一个错误,因为你的解决scheme上面的棒棒糖工作正常。
<item name="colorButtonNormal">@color/my_color</item>
使用:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="buttonStyle">@style/AppTheme.Button</item> </style>
删除android:
确保您的Activity
正在扩展AppCompatActivity
,否则将无法正确处理appCompat样式。
- 类:
android.support.v7.app.AppCompatActivity
- Gradle:
compile 'com.android.support:appcompat-v7:23.0.1'
这样可行:
<!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <!-- android:buttonStyle for v21+ and buttonStyle for the rest --> <item name="buttonStyle">@style/MyCustomButton</item> <item name="android:buttonStyle">@style/MyCustomButton</item> <item name="colorButtonNormal">@color/my_color</item> </style> <style name="MyCustomButton" parent="Base.Widget.AppCompat.Button"> <item name="android:textColor">#ffffff</item> <item name="android:textAppearance">?android:attr/textAppearanceMedium</item> </style>
colorButtonNormal
可以在主题样式中设置。 要更改文本颜色,大小或button的任何其他function,可以创build一个样式,然后在主题样式中使用buttonStyle
(小于v21)或android:buttonStyle
(v21 +)来设置button样式。
V21 / styles.xml
<style name="AppTheme.BlueButton" parent="Widget.AppCompat.Button.Colored"> <item name="android:colorButtonNormal">@color/blue</item> <item name="android:textColor">@color/text_white</item> </style>
styles.xml
<style name="AppTheme.BlueButton" parent="Widget.AppCompat.Button.Colored"> <item name="colorButtonNormal">@color/blue_tint</item> <item name="android:textColor">@color/text_white</item> </style>
起初我也面临这个问题。 经过上面的修改之后,我得到了正确的UIbutton
嗨,我认为你使用的父窗口部件可能是不正确的一个,它应该android:Widget.Button
API版本21或更早的版本,为更高版本21或以上,你应该使用`android:Widget.Material.Button。 假设你有默认的样式应该看下面。
res/values/styles.xml <resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:buttonStyle">@style/AppTheme.Button</item> </style> <style name="AppTheme.Button" parent="android:Widget.Button"> <item name="android:background">@color/my_color</item> <item name="android:textColor">@android:color/white</item> </style> </resources>
对于API版本21,资源样式文件应该类似于(res / values-v21 / style.xml)
<resources> <style name="AppTheme.Button" parent="android:Widget.Material.Button"> <item name="android:background">@color/my_color</item> <item name="android:textColor">@android:color/white</item> </style> </resources>
谢谢如果您有任何问题,请告诉我。