2009-08-27 12 views
49

Wenn ich setEnabled(false) für ein TextView Objekt aufrufen, ändert sich die Textfarbe nicht. Ich habe erwartet, dass es in grau geändert wird. Wenn ich die Zeile android:textColor in meiner XML-Datei entferne, wird sie auf normal zurückgesetzt.Android Textansicht Farbe ändert sich nicht, wenn deaktiviert

Irgendwelche Ideen?

+0

ist die Lösung: D http://stackoverflow.com/questions/4692642/android-customized-button-changing-text-color – cesards

+0

Sie müssen manuell die Textfarbe auf, was Sie wollen. Zumindest musste ich das tun. – MattC

Antwort

121

Ich denke, was passiert ist, dass, da Sie die Standard-Textfarbe überschreiben, es die anderen Textcolor-Stile nicht erbt. Versuchen Sie, dafür eine ColorStateList zu erstellen, und legen Sie das textColor-Attribut anstelle einer Farbe fest.

In einer Farbdatei (zB res/Farbe/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> 

dann in Ihrem Layout:

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

Hinweis, ich habe dies nicht in einer Weile getan und Ich tippe viel davon aus dem Gedächtnis, also könnte es ein wenig zwicken müssen. In den ColorStateList-Dokumenten (die oben verlinkt sind) gibt es ein ausführlicheres Beispiel für die XML-Farbdatei. Hier

+1

hey danke, das hat mir sehr geholfen. – Matthias

+0

Glücklich zu helfen :) –

+0

Großer, danke! – Tomasz