Ich versuche, die Hintergrundfarbe eines Android- TextView
Widgets zu ändern, wenn der Benutzer es berührt. Zu diesem Zweck habe ich einen Selektor erstellt, der in gespeichert ist res/color/selector.xml
und ungefähr so aussieht:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:color="@color/semitransparent_white"
/>
<item
android:color="@color/transparent"
/>
</selector>
Das clickable
Attribut von TextView
ist true
, falls das von Interesse ist.
Als ich diesen auf ein zuweisen TextView
wie android:background="@color/selector"
, ich erhalte die folgende Ausnahme zur Laufzeit:
ERROR / AndroidRuntime (13130): Auslöser: org.xmlpull.v1.XmlPullParserException: Binäre XML-Dateizeile Nr. 6: Tag erfordert ein 'drawable'-Attribut oder ein untergeordnetes Tag, das ein Drawable definiert
Wenn ich das Attribut in "Zeichenbar" ändere, funktioniert es, aber das Ergebnis sieht völlig falsch aus, da die IDs als Bildreferenzen anstelle von Farbreferenzen interpretiert werden (wie das "Zeichenbar" nahe legt).
Was mich verwirrt ist, dass ich eine Farbreferenz, z. B. "@ color / black", direkt als Hintergrundattribut festlegen kann. Dies funktioniert wie erwartet. Die Verwendung von Selektoren funktioniert nicht.
Ich kann den Selektor auch textColor
ohne Probleme als Selektor verwenden.
Was ist der richtige Weg, um einen Hintergrundfarbwähler auf einen TextView
in Android anzuwenden ?