Ich versuche, die Hintergrundfarbe eines Android- TextViewWidgets zu ändern, wenn der Benutzer es berührt. Zu diesem Zweck habe ich einen Selektor erstellt, der in gespeichert ist res/color/selector.xmlund 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 clickableAttribut von TextViewist true, falls das von Interesse ist.
Als ich diesen auf ein zuweisen TextViewwie 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 textColorohne Probleme als Selektor verwenden.
Was ist der richtige Weg, um einen Hintergrundfarbwähler auf einen TextViewin Android anzuwenden ?