Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android, setSelected () y state_selected

Tengo problemas con View.setSelected() . Views se marcan como seleccionadas – TextViews , por ejemplo, cambian su color de fuente – pero mis selectores de fondo no parecen registrar el cambio.

Selector de ejemplo:

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@android:color/transparent" /> <item android:state_selected="true"> <shape android:shape="rectangle"> <solid android:color="#ff8600" /> </shape> </item> </selector> 

Ni siquiera estoy seguro de qué tipo de información de contexto sería útil. Las vistas son los niños de un LinearLayout, y estoy programando el estado seleccionado dentro de un evento táctil. Como he dicho, parece que funciona, ya que el color de la fuente va de blanco a gris, pero el fondo sigue siendo el mismo.

Edit : Comprobé errores tontos antes de publicar: P. La respuesta no es "agregar el atributo android: background".

  • ¿Cómo implementar la vista de pila personalizada en android?
  • Cómo depurar estilos de interfaz de usuario de Android
  • Uso de clipRect - explicación
  • ¿Cómo puedo dibujar una vista animada en android?
  • ¿Qué es android: layout_marginStart
  • ¿Hay una manera de obtener el diseño de la actividad actual y las vistas a través de adb?
  • ¿Cómo animar el cambio de texto en TextView?
  • Cómo implementar Swipe en Android juego sin vista
  • 3 Solutions collect form web for “Android, setSelected () y state_selected”

    El orden de los elementos importa en el selector xmls, el elemento por defecto siempre debe estar en la parte inferior de la lista de elementos.

    No sólo el orden del estado seleccionado es importante, incluso el orden de todos los estados es importante. En mi caso, agregué state_pressed como primero y mi state_selected no funciona. Así que cambié el orden como este, y luego funcionó:

     <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_selected="false" android:drawable="@drawable/chooser_normal"></item> <item android:state_selected="true" android:drawable="@drawable/chooser_pressed"></item> <item android:state_pressed="true" android:drawable="@drawable/chooser_pressed"></item> <item android:state_pressed="false" android:drawable="@drawable/chooser_normal"></item> </selector> 

    EDITAR

    Me enfrenté ahora también al problema, si presiono el botón, estará en el estado seleccionado, pero no en estado prensado. Por lo tanto, la solución debe ser, para ordenar los estados como este y otros, es una buena práctica para agregar un aspecto de botón por defecto:

    Primero, ajuste el estado seleccionado y después de esto, ajuste el mismo como estado presionado alternativamente. (Por ahora, stackoverflow no muestra mi edición completamente, no sé por qué, sólo sea paciente por favor).

    No es obvio por qué, pero creo que esto podría funcionar (note la adición de state_selected = "false"):

     <item android:state_selected="false" android:drawable="@android:color/transparent" /> <item android:state_selected="true"> <shape android:shape="rectangle"> <solid android:color="#ff8600" /> </shape> </item> 

    Espero que sea útil.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.