我试图设置我的样式,使所有按钮成为特定的颜色组合,特别是蓝色和白色文本。这是我的主要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
为白色。在棒棒糖上,按钮看起来很完美。在4.1设备上,它是浅灰色,带有黑色文本。我发现这样做的每一种资源都与我所做的完全一样,所以我不知道我在这里失踪了什么。
我在基本样式定义中也有类似的控制文本大小的问题。
更新:这是颜色。
<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上正常运行。
答案 0 :(得分:14)
使用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>
然后使用来自theme
命名空间的原生android
属性在按钮中应用主题,如来自Chris Banes的this精彩帖子所述。
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sign_up_button"
android:theme="@style/MyApp.Button.Red" />
答案 1 :(得分:3)
我尝试添加buttonStyle
而没有android:
前缀,它解决了问题。是的,很奇怪。
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="buttonStyle">@style/ButtonStyle</item>
<item name="android:buttonStyle">@style/ButtonStyle</item>
</style>
答案 2 :(得分:-2)
的gradle:compile 'com.android.support:appcompat-v7:22.2.0'
要使主题在android lollipop中正常工作,你需要扩展 ActionBarActivity 而非活动。 通过执行此更改,您的主题设置应该正常工作。 这对于其他人来说是通用的,对于较低版本的android,你不应该在项目名称定义中使用 android:标记 `