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> 

谢谢如果您有任何问题,请告诉我。