Android 样式指定按钮颜色

Posted

技术标签:

【中文标题】Android 样式指定按钮颜色【英文标题】:Android style specify button color 【发布时间】:2012-12-11 00:12:53 【问题描述】:

我正在尝试在 styles.xml

中默认应用按钮文本颜色
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="AppTheme">
   <item name="android:windowFullscreen">true</item>
   <item name="android:windowBackground">@color/black</item>
   <item name="android:textColor">@color/green</item>
</style> 

如何使样式更改按钮颜色,并应用于整个应用程序?我的主要活动包括:

    <application
    android:icon="@drawable/ic_launcher"
    android:label="Hack the World"
    android:theme="@style/AppTheme">

这会更改所有文本(例如 TextView),但不会更改按钮中的文本。如果我使用上面的 ColorThemes 样式并将其放在按钮的 xml 中,如下所示:

    <Button
    android:id="@+id/button3"
    android:layout_
    android:layout_
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:onClick="loadSavedgame"
    android:text="Load Saved Game" 
    android:textColor="@color/green" />"

然后它完美地工作。为什么由于风格而不能普遍适用?所有不同版本的 styles.xml 都有相同的代码。

【问题讨论】:

【参考方案1】:

我最终发现一个按钮实际上是一个 9-patch 图像,位于 @android:drawable/btn_default 为了改变背景你必须修改这个图像。为了更改按钮文本颜色,我必须设置按钮小部件样式并将其导入我的应用主题,如下所示:

<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar" >
   <item name="android:windowFullscreen">true</item>
   <item name="android:windowBackground">@color/black</item>
   <item name="android:textColor">@color/green</item>
   <item name="android:buttonStyle">@style/ButtonText</item>
</style> 

    <style name="ButtonText" parent="@android:style/Widget.Button">
   <item name="android:textColor">@color/green</item>
   <item name="android:background">@android:drawable/btn_default</item><!-- only way to change this is to change the src image -->
   <item name="android:layout_width">80.0px</item>
   <item name="android:layout_height">40.0px</item> 
</style> 
</resources>

【讨论】:

以上是关于Android 样式指定按钮颜色的主要内容,如果未能解决你的问题,请参考以下文章

使用样式设置按钮文本颜色

Android动态生成按钮样式

Android - 默认按钮样式

如何在保留其他样式属性的同时更改 Android Button 波纹颜色?

材料设计:在Android中用两种颜色为两个按钮着色

Android样式之selector