Цвет текста Android не меняется при отключении - PullRequest
56 голосов
/ 27 августа 2009

Когда я вызываю setEnabled(false) для объекта TextView, цвет текста не меняется. Я ожидал, что он будет изменен на серый. Если я удаляю строку android:textColor в моем XML-файле, она возвращается к нормальной.

Есть идеи?

1 Ответ

135 голосов
/ 29 августа 2009

Я думаю, что происходит то, что, поскольку вы переопределяете текстовый цвет по умолчанию, он не наследует другие стили текстового цвета. Попробуйте создать для него 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-файла.

...