Android文本视图颜色在禁用时不会更改

当我为一个TextView对象调用setEnabled(false) ,文本颜色不会改变。 我预料它会变成灰色。 如果我删除我的XML文件中的android:textColor行,它将恢复正常。

有任何想法吗 ?

我认为发生了什么是因为你重写默认的文本颜色,它不是inheritance其他文本颜色样式。 尝试为它创build一个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" /> 

请注意,我有一段时间没有这样做,我从记忆中input了很多,所以可能需要稍微调整一下。 ColorStateList文档(上面链接)有一个更加丰富的颜色XML文件的例子。