2012-01-05 61 views
21

按钮选择器允许为按钮的每个状态定义背景,但是如何为每个状态定义按钮的文本样式?我的目标是在禁用时变灰。所以我设置了一个灰色的按钮的禁用状态的背景,但我发现也灰掉文本的唯一方法是当我禁用按钮时动态地改变它的颜色...如何在选择器中设置按钮的文本样式?

任何人都可以提供帮助吗?

感谢

<style name="srp_button" parent="@android:style/Widget.Button"> 
    <item name="android:background">@drawable/btn_default</item> 
    <item name="android:textColor">#ffffff</item> <!-- How to specify different color for different state? --> 
    <!-- more stuff --> 
</style> 

绘制/ btn_default.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_enabled="true"><shape> 
      <solid android:color="@color/pink" /> 
      <corners android:radius="6dp" /> 
     </shape></item> 
    <item><shape> 
      <solid android:color="#000000" /> 
      <corners android:radius="6dp" /> 
     </shape></item> 

</selector> 
+0

请把您曾尝试你的代码... – 2012-01-05 13:50:59

+0

只是不知道该怎么办你编译 @ drawable/btn_default没有任何编译错误。我找到了与'@ drawable/btn_default'值'android:background'相匹配的资源。 – 2015-01-02 17:53:00

回答

42

嘛!

您可以为所有4状态定义文本颜色,类似于您为Button定义的背景。例如:

文件名:/res/color/text_color.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_enabled="false" android:color="#440000"/> 
    <item android:state_focused="true" android:color="#004400"/> 
    <item android:state_pressed="true" android:color="#000044"/> 
    <item android:color="#444"/> 
</selector> 

把这个文件到您的Button风格是这样的:

<style name="srp_button" parent="@android:style/Widget.Button"> 
    <item name="android:background">@drawable/btn_default</item> 
    <item name="android:textColor">@color/text_color</item> <!-- Here is specified text color --> 
</style> 
+1

哇,真酷!选择器项目中的属性“android:color”未被记录!但它确实有效! – Lcsky 2012-08-11 14:48:42

+1

这里是它的文档 http://developer.android.com/guide/topics/resources/color-list-resource.html – AdrianoCelentano 2013-11-20 15:02:32

+0

非常感谢你提及textColor,特别是你旁边的评论(! - 这里是指定的文字颜色 - >)。我不知道你可以使用textColor的普通颜色选择器(使用android:color属性),并且你可以同时使用自定义背景和自定义textColor。当你有自定义背景(我有一个波纹背景)时,我在互联网上搜索了半个小时的关于如何使用禁用状态的文本颜色,除此之外我没有发现任何东西!谢谢! – Metallica 2016-04-28 21:33:44

相关问题