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


70

当我打电话setEnabled(false)TextView对象的文本颜色没有变化。我预计它将更改为灰色。如果删除android:textColorXML文件中的行,它将恢复正常。

有任何想法吗 ?


您必须手动将文本颜色设置为所需的颜色。至少那是我必须要做的。
MattC

Answers:


157

我认为正在发生的事情是,由于您要覆盖默认的textcolor,因此它不会继承其他textcolor样式。尝试为其创建一个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

2
有没有办法以编程方式获取禁用文本的颜色?
Android开发人员
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.