web-dev-qa-db-fra.com

Android la couleur d'affichage du texte ne change pas lorsqu'elle est désactivée

Lorsque j'appelle setEnabled(false) pour un objet TextView, la couleur du texte ne change pas. Je m'attendais à ce qu'il devienne gris. Si je supprime la ligne de Android:textColor dans mon fichier XML, il revient à la normale.

Des idées ?

56
henri51

Je pense que ce qui se passe, c'est que puisque vous remplacez la couleur de texte par défaut, il n'hérite pas des autres styles de couleur de texte. Essayez de créer un ColorStateList pour lui et de lui attribuer l'attribut textColor au lieu d'une couleur.

Dans un fichier couleur (par exemple 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>

puis dans votre mise en page:

<TextView
    Android:text="whatever text you want"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:textColor="@color/example" />

Remarque, je n'ai pas fait cela depuis un moment et j'en tape beaucoup de mémoire, il peut donc avoir besoin d'un petit ajustement. Les documents ColorStateList (liés ci-dessus) ont un exemple plus étoffé pour le fichier XML couleur.

137
Jeremy Logan