【发布时间】:2015-11-11 14:31:08
【问题描述】:
我想在按钮状态更改时更改按钮的文本颜色。例如,当按钮被禁用时,我希望它的颜色是灰色的,当它被启用时,我希望它是白色的等等。所以,为了实现这一点,我在我的 styles.xml 文件中做到了这一点:
res/drawable/styles.xml
<style name="AppTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
..
<item name="android:buttonStyle">@style/AppTheme.Button</item>
..
</style>
<style name="AppTheme.Button" parent="android:Widget.Button">
<item name="android:background">@drawable/shadow_button</item>
<item name="android:textColor">@drawable/shadow_button_text</item>
...
</style>
我根据 shadow_button 资源 XML 文件中的状态定义了按钮的行为。我决定制作一个新的,以便根据状态更改文本颜色,如this post中所建议的那样:
res/drawable/shadow_button_text.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true" android:color="@color/darkRed" />
<item android:state_pressed="true" android:color="@color/darkRed" />
<item android:state_enabled="false" android:color="@color/darkGrey" />
<item android:color="@color/darkRed" />
</selector>
不幸的是,没有任何变化 - 颜色的文本保持白色。我做错了什么?
编辑: 对不起,伙计们,原来我在测试上述代码的活动中的一个按钮上留下了 textColor="white" 。我删除了这个标签,一切正常。
【问题讨论】:
-
您还有其他
styles.xml文件吗?此代码工作正常。 -
你的意思是这里?按钮禁用意味着不可点击的仪式!?
-
可能是错字,但将您的 styles.xml 移动到 res/values/
-
对不起,伙计们,原来我在测试上述代码的活动中的一个按钮上留下了 textColor="white"。我删除了这个标签,一切正常。
标签: android button text colors drawable