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" /> 
  • Selector hereda
  • Android ImageButton estado no cambia
  • Android - barra de búsqueda de estilo
  • ListView Sombra de artículo + selector personalizado
  • Cambio de relleno en el selector
  • Android Selector Drawable no funciona con atributos
  • Android: Cómo hacer un selector desplegable
  • Cómo cambiar el color del texto en la prensa de un textview particular en un linearlayout
  • ¿Cómo cambiar el color presionado a otro color del selector dinámicamente?
  • Appcompact DialogFragment de una sola opción marca de verificación color
  • Cómo cambiar textColor de un botón de XML en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.