Android文本视图禁用后颜色不会改变

81
当我对一个TextView对象调用setEnabled(false)方法时,文字颜色并不会改变。我期望它应该会变成灰色。如果我在XML文件中删除android:textColor这一行的代码,那么文字颜色就会恢复正常。
有什么想法吗?

你必须手动将文本颜色设置为你想要的任何颜色。至少我是这样做的。 - MattC
这里是解决方案 :D https://dev59.com/lG445IYBdhLWcg3wytMU - cesards
1个回答

174
我认为发生的情况是,由于您覆盖了默认文本颜色,它没有继承其他文本颜色样式。尝试为其创建ColorStateList,并将textColor属性设置为它,而不是设置为颜色。
在一个颜色文件中(例如res/color/example.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="@color/disabled_color" />
    <item android:color="@color/normal_color"/>
</selector>

然后在您的布局中:
<TextView
    android:text="whatever text you want"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="@color/example" />

注意,我已经有一段时间没有做这个了,而且我正在从记忆中打很多字,所以可能需要稍微调整一下。ColorStateList文档(上面链接的)有一个更详细的颜色XML文件示例。

1
谢谢!把它放在一个地方非常方便。只是顺带一提,你可以把它放到“xml”文件夹中,使用“@xml/example”,而不是“color”文件夹(例如,在2.1中不是标准的)。从styles.xml中也可以很好地工作! - halxinate
3
有没有一种编程方式可以获取禁用文本的颜色? - android developer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接