Android的默认button造型不起作用

我试图设置我的风格,使所有的button一个特定的颜色组合,特别是蓝色的白色文字。 这是我的主要styles.xml:

<resources> <style name="CustomTheme" parent="MaterialDrawerTheme.Light.DarkToolbar"> <!-- various items --> <item name="android:buttonStyle">@style/ButtonStyle</item> </style> <!-- a couple of other styles --> <style name="ButtonStyle" parent="android:style/Widget.Button"> <item name="android:textSize">19sp</item> <item name="android:textColor">@color/primaryTextContrast</item> <item name="android:background">@color/primary</item> </style> </resources> 

在清单中:

  <application android:name=".CustomApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/application_name" android:theme="@style/CustomTheme"> 

color/primary是深蓝色,而color/primaryTextContrast是白色的。 在棒棒糖上,button看起来很完美。 在4.1设备上,它是浅灰色,黑色文字。 我find的每个资源都与我所做的完全一样,所以我不知道我在这里错过了什么。

我在控制基本样式定义中的文本大小也有类似的问题。

更新:这里是颜色。

 <resources> <color name="primary">#3F51B5</color> <color name="dark">#303F9F</color> <color name="accent">#FFCA28</color> <color name="background">@android:color/white</color> <!-- Color for text displayed on top of the primary or dark color --> <color name="primaryTextContrast">@android:color/white</color> <!-- Color for text displayed on the background color (which I think will always be white) --> <color name="basicText">@color/primary</color> <!-- Color for text displayed on the accent color --> <color name="accentText">#303F9F</color> </resources> 

这里是v19 / styles.xml:

 <?xml version="1.0" encoding="utf-8"?> <resources> <style name="FullscreenTheme" parent="MaterialDrawerTheme.Light.DarkToolbar.TranslucentStatus"> <item name="android:windowTranslucentNavigation">true</item> <item name="android:windowNoTitle">true</item> <item name="android:windowTranslucentStatus">true</item> </style> </resources> 

这里是v21:

 <?xml version="1.0" encoding="utf-8"?> <resources> <style name="AppTheme" parent="CustomTheme"> <item name="android:windowContentTransitions">true</item> <item name="android:windowAllowEnterTransitionOverlap">true</item> <item name="android:windowAllowReturnTransitionOverlap">true</item> <item name="android:windowSharedElementEnterTransition">@android:transition/move</item> <item name="android:windowSharedElementExitTransition">@android:transition/move</item> </style> </resources> 

我不认为这些是什么使它在5.1上正常工作。

Solutions Collecting From Web of "Android的默认button造型不起作用"

使用AppCompat 22.1.+22.2.0应该也可以),我定义了这样一个样式:

 <style name="MyApp.Button.Red" parent="Base.Widget.AppCompat.Button"> <item name="colorButtonNormal">@color/primary</item> <item name="android:colorButtonNormal">@color/primary</item> <item name="android:textColor">@android:color/white</item> </style> 

然后使用来自android命名空间的本地theme属性在button中应用主题,就像Chris Banes在这个真棒博文中所说的那样。

 <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/sign_up_button" android:theme="@style/MyApp.Button.Red" /> 

我尝试添加不带android:前缀的buttonStyle ,并解决了这个问题。 对,很奇怪

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="buttonStyle">@style/ButtonStyle</item> <item name="android:buttonStyle">@style/ButtonStyle</item> </style> 

gradle:compile'c​​om.android.support:appcompat-v7:22.2.0 compile 'com.android.support:appcompat-v7:22.2.0'

为了使主题在android棒棒糖中正常工作,您需要扩展ActionBarActivity而不是Activity 。 通过做这个改变,你的主题设置应该正常工作。 对于其他人来说,对于较低版本的Android,这是一般的,你不应该在项目名称定义`中使用android:标签