Selektor auf Hintergrundfarbe von TextView
Ich versuche, ändern Sie die Hintergrundfarbe von einem Android - TextView
widget, wenn der Benutzer Sie berührt. Ich habe eine Wahlschalter für diesen Zweck, die gespeichert ist in res/color/selector.xml
und in etwa 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>
Den clickable
Attribut des TextView
ist true
im Fall ist von Interesse.
Wenn ich weisen Sie diesen Selektor, um eine TextView
als android:background="@color/selector"
ich bin immer folgende exception zur Laufzeit:
ERROR/AndroidRuntime(13130): Verursacht durch: org.xmlpull.v1.XmlPullParserException: Binary XML file line #6: tag erfordert ein "drawable" - Attribut oder ein untergeordnetes tag definieren ein drawable
Wenn ich das Attribut auf drawable, es funktioniert, aber das Ergebnis ist auf der Suche völlig falsch, weil die IDs angezeigt werden interpretiert als Bild-Referenzen die Farbe, sondern auch Referenzen (wie die "drawable" andeutet).
Was mich verwirrt ist, dass ich eine Farbe-Bezug, z.B. "@color/black", wie das background-Attribut direkt. Dies funktioniert wie erwartet. Mithilfe von Selektoren funktioniert nicht.
Ich kann auch mit der Auswahl als die textColor
ohne Probleme.
Was ist die richtige Methode anwenden, eine hintergrund-Farbe-Selektor, um eine TextView
in Android?
InformationsquelleAutor der Frage digitalbreed | 2010-08-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem hier ist, dass man nicht definieren Sie die hintergrund-Farbe über den Farbwähler, müssen Sie eine drawable - Selektor. So, die nötigen änderungen würden wie folgt Aussehen:
Würden Sie auch verschieben müssen, um die Ressource zu der
drawable
Verzeichnis, wo es mehr Sinn machen würde, da es keine Farbauswahl per se.Dann müssen Sie diesen erstellen die
res/drawable/selected_state.xml
- Datei wie folgt:und schließlich, Sie würde es verwenden, wie diese:
Hinweis: der Grund, warum die OP war immer eine Bild-Ressource gezogen ist, wahrscheinlich, weil er gerade versucht seine Referenz-Ressource, die war noch in der Farbe-Verzeichnis, aber mit
@drawable
so landete er mit einem ID-Konflikt, der Auswahl der falschen Ressourcen.Hoffe das kann noch jemand helfen, auch wenn die OP wohl hat, hoffe ich, gelöst sein problem jetzt.
InformationsquelleAutor der Antwort Benoit Martin
Benoit ' s Lösung funktioniert, aber Sie wirklich nicht brauchen, um Aufwand zum zeichnen einer Form. Da die Farben können drawables, nur eine Farbe festlegen, die in einem /res/values/colors.xml Datei:
Und verwenden Sie dann als solche in Ihrem Selektor:
InformationsquelleAutor der Antwort azdev
Sogar eine noch einfachere Lösung für das oben:
Speichern, die in den drawable-Ordner und du bist gut zu gehen.
InformationsquelleAutor der Antwort Jason Robinson
Sogar dies funktioniert.
Habe ich den
android:drawable
- Attribut auf jedes Element, und Ihre Werte sind Farben.Durch die Art und Weise, warum Sie sagen, dass
color
ist eines der Attribute vonselector
? Sie schreiben nicht, dassandroid:drawable
erforderlich ist.Farbe Status-Liste Ressource
InformationsquelleAutor der Antwort Maksim Dmitriev
Wer auf der Suche ist, es zu tun, ohne eine hintergrund-Sektor, fügen Sie einfach diese Zeilen, um die
TextView
Auch wählbar Verwendung:
InformationsquelleAutor der Antwort Dasser Basyouni