Estou tentando alterar a cor de segundo plano de um TextViewwidget Android quando o usuário toca nele. Eu criei um seletor para esse fim, que é armazenado res/color/selector.xmle mais ou menos assim:
<?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>
O clickableatributo do TextViewé true, caso isso seja interessante.
Quando atribuo esse seletor a um TextViewas android:background="@color/selector", estou recebendo a seguinte exceção em tempo de execução:
ERROR / AndroidRuntime (13130): Causado por: org.xmlpull.v1.XmlPullParserException: Arquivo XML binário linha # 6: tag requer um atributo 'drawable' ou marca filho que define um drawable
Quando altero o atributo para drawable, ele funciona, mas o resultado parece completamente errado porque os IDs parecem ser interpretados como referências de imagem em vez de referências de cores (como sugere o "drawable").
O que me confunde é que eu posso definir uma referência de cor, por exemplo "@ color / black", como o atributo background diretamente. Isso está funcionando como esperado. O uso de seletores não funciona.
Também posso usar o seletor como textColorsem problemas.
Qual é a maneira correta de aplicar um seletor de cores de fundo a um TextViewno Android?