El selector ImageView no funciona

Estoy formando un tabhost como el diseño en mi aplicación con varios ImageView. Cuando selecciono un elemento, la imagen cambiará. Sin embargo, traté de hacer clic en él, no pasa nada! ¿¿¿por qué???

activity_main.xml

<TableLayout android:id="@+id/main_tab_bar" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:stretchColumns="0,1,2,3,4"> <TableRow android:layout_width="match_parent" android:layout_height="wrap_content"> <ImageView android:id="@+id/news" android:clickable="true" android:focusable="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/main_tab_news_selector"/> <ImageView android:id="@+id/share" android:clickable="true" android:focusable="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/main_tab_share_selector"/> <ImageView android:id="@+id/camera" android:clickable="true" android:focusable="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/main_tab_camera_selector"/> <ImageView android:id="@+id/status" android:clickable="true" android:focusable="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/main_tab_status_selector"/> <ImageView android:id="@+id/others" android:clickable="true" android:focusable="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/main_tab_others_selector"/> </TableRow> </TableLayout> 

main_tab_news_selector.xml (los otros selectores son similares)

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

Su código xml dibujable debe verse así

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/pressed.png" /> <item android:state_selected="true" android:drawable="@drawable/select.png" /> <item android:state_activated="true" android:drawable="@drawable/pressed.png" /> <item android:drawable="@drawable/normal.png" /> </selector> 

Sólo tienes que añadir esto a tu ImageView

 android:clickable="true" 

Establezca el focusableInTouchMode como verdadero y escuche su state_focus en el selector.

Resuelve el problema 🙂

activity_main.xml

 <TableLayout android:id="@+id/main_tab_bar" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:stretchColumns="0,1,2,3,4"> <TableRow android:layout_width="match_parent" android:layout_height="wrap_content"> <ImageView android:id="@+id/news" android:clickable="true" android:focusable="true" android:focusableInTouchMode="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/main_tab_news_selector"/> <ImageView android:id="@+id/share" android:clickable="true" android:focusable="true" android:focusableInTouchMode="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/main_tab_share_selector"/> <ImageView android:id="@+id/camera" android:clickable="true" android:focusable="true" android:focusableInTouchMode="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/main_tab_camera_selector"/> <ImageView android:id="@+id/status" android:clickable="true" android:focusable="true" android:focusableInTouchMode="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/main_tab_status_selector"/> <ImageView android:id="@+id/others" android:clickable="true" android:focusable="true" android:focusableInTouchMode="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/main_tab_others_selector"/> </TableRow> </TableLayout> 

los selectores

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

Tienes que cambiar

  1. ImageView to ImageButton
  2. src al background

src también funciona butt que muestran algún espacio alrededor de la drawable.

Escribir android:state_focused="true" antes de android:drawable="@drawable/ic"

  • Cómo establecer el color de fila alternativo de Listview y el color de fondo del elemento seleccionado
  • Selección de un número del usuario con varios números cuando se utiliza el selector de contactos
  • NullPointerException en el método de mutación de Drawable Android 1.6
  • Android: Cómo hacer un selector desplegable
  • Android - barra de búsqueda de estilo
  • Selector de fondo en RecyclerView Item
  • Selector de botones de Android
  • Appcompact DialogFragment de una sola opción marca de verificación color
  • 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
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.