J'essaie de changer la couleur d'arrière-plan d'un TextViewwidget Android lorsque l'utilisateur le touche. J'ai créé un sélecteur à cet effet, qui est stocké dans res/color/selector.xmlet ressemble à peu près à ça:
<?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>
L' clickableattribut de TextViewest true, au cas où cela vous intéresse.
Lorsque j'attribue ce sélecteur à un TextViewas android:background="@color/selector", j'obtiens l'exception suivante au moment de l'exécution:
ERREUR / AndroidRuntime (13130): causée par: org.xmlpull.v1.XmlPullParserException: ligne de fichier XML binaire # 6: la balise nécessite un attribut 'drawable' ou une balise enfant définissant un dessinable
Quand je change l'attribut en drawable, cela fonctionne, mais le résultat est complètement faux car les ID semblent être interprétés comme des références d'image au lieu de références de couleur (comme le suggère le "drawable").
Ce qui me trouble, c'est que je peux définir une référence de couleur, par exemple "@ color / black", comme attribut d'arrière-plan directement. Cela fonctionne comme prévu. L'utilisation de sélecteurs ne fonctionne pas.
Je peux aussi utiliser le sélecteur comme le textColorsans problèmes.
Quelle est la bonne façon d'appliquer un sélecteur de couleur d'arrière-plan à un TextViewsous Android?