Estoy intentando cambiar el color de fondo de un widget de Android TextView
cuando el usuario lo toca. He creado un selector para tal fin, que se almacena en res/color/selector.xml
y más o menos se parece a lo siguiente:Selector en el color de fondo de TextView
<?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>
El atributo clickable
del TextView
es true
, en caso que es de su interés.
Cuando le asigno este selector a un TextView
como android:background="@color/selector"
, estoy recibiendo la siguiente excepción en tiempo de ejecución:
ERROR/Android Runtime (13130): Causado por: org.xmlpull.v1.XmlPullParserException: Binario línea de archivo XML # 6: etiqueta requiere una etiqueta de atributo o niño dibujable 'definir un dibujable
Cuando cambio el atributo a estirable, funciona, pero el resultado está buscando completamente equivocado, porque las identificaciones parecen ser interpretado como referencias de imagen en lugar de referencias de color (como las "dibujables" uggests).
Lo que me confunde es que puedo establecer una referencia de color, p. "@ color/black", como atributo de fondo directamente. Esto está funcionando como se esperaba. Usar selectores no funciona.
También puedo usar el selector como textColor
sin problemas.
¿Cuál es la forma correcta de aplicar un selector de color de fondo a un TextView
en Android?
Un color se puede interpretar como dibujable. ¿Cómo es el resultado incorrecto exactamente? –
No muestra el color sino una imagen de mis recursos dibujables como fondo. – digitalbreed
Lo anterior debería funcionar, si usas android: drawable, no android: color - al menos en ese caso funciona para mí: android: drawable = "@ color/my_custom_color". Mis colores están definidos en valores/colors.xml – AgentKnopf