Android: ¿por qué no puedo usar un selector para el fondo de TextView?

Mi selector es:

<item android:state_pressed="true" android:color="@color/bg_grey"/> <item android:state_focused="true" android:color="@color/bg_grey"/> <item android:color="@color/white"/> 

y tengo mi TextView como:

  <TextView android:id="@+id/tv" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:background="@drawable/textview_selector" android:padding="5dp" android:text="Some Text" android:textColor="@color/text_grey" android:textSize="16dp" /> 

De esta manera estoy recibiendo:

 android.view.InflateException: Binary xml file line #68: Error inflating class <unknown> 

si estoy utilizando este selector como android:textColor="@drawable/textview_selector" su funcionamiento muy bien

El problema aquí es que no se puede definir el color de fondo con un selector de color, necesita un selector de dibujo. Por lo tanto, los cambios necesarios se verían así:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/selected_state" /> </selector> 

También necesitará mover ese recurso al directorio dibujable donde tendría más sentido ya que no es un selector de color per se.

Entonces tendrías que crear el archivo res / drawable / selected_state.xml como este:

 <?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="@color/bg_grey" /> </shape> 

y finalmente, lo usarías así:

 android:background="@drawable/selector" 

Estás definiendo Color en lugar de un fondo Dibujable en Selectores xml, prueba con fondos dibujables

sólo necesita asegurarse de que los colores están en el archivo colors.xml y no coloque los colores hexadecimales directamente en los elementos del selector.

my_selector.xml:

  <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/category_item_selected_color" android:state_selected="true"/> <item android:drawable="@color/category_item_selected_color" android:state_pressed="true"/> <item android:drawable="@color/white" /> </selector> 

y hacer que su vista de texto tenga este aspecto:

  <TextView android:id="@+id/tv_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:letterSpacing="0.05" android:textColor="#000000" android:gravity="center" android:textSize="17sp" tools:text="New In" android:clickable="true" android:focusable="true" android:focusableInTouchMode="true" android:background="@drawable/my_selector" android:layout_gravity="center" /> 
  • Deshabilitar el resaltado de GridView de Android completamente (deshabilitar la selección)
  • ¿Cómo cambiar el color presionado a otro color del selector dinámicamente?
  • Android drawable invalid start tag
  • Android Selector Drawable no funciona con atributos
  • NullPointerException en el método de mutación de Drawable Android 1.6
  • Cómo cambiar textColor de un botón de XML en Android?
  • Android linearlayout selector de fondo
  • Cómo establecer el color de fila alternativo de Listview y el color de fondo del elemento seleccionado
  • Selector hereda
  • Android ImageButton estado no cambia
  • Selección de un número del usuario con varios números cuando se utiliza el selector de contactos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.