J'essaie de changer la couleur d'arrière-plan d'un TextView
widget Android lorsque l'utilisateur le touche. J'ai créé un sélecteur à cet effet, qui est stocké dans res/color/selector.xml
et 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' clickable
attribut de TextView
est true
, au cas où cela vous intéresse.
Lorsque j'attribue ce sélecteur à un TextView
as 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 textColor
sans problèmes.
Quelle est la bonne façon d'appliquer un sélecteur de couleur d'arrière-plan à un TextView
sous Android?