studio reales proyectos programacion introducción incluye herramientas fundamentos fuente código con avanzado aplicaciones android listview layout

reales - manual android studio avanzado



¿Cómo cambiar el color de la fuente en elementos ListView seleccionados/enfocados? (5)

Cuando implemente la aplicación para Android 11+ (HoneyComb +), debe usar

android:state_activated="true"

para el estado de la lista seleccionada. Para las versiones anteriores, use la combinación de:

android:state_checked="true" android:state_activated="true"

Por supuesto, no te olvides de incluir el

android:duplicateParentState="true"

para que la vista pueda obtener el estado activado / verificado de un elemento de vista de lista principal

Estoy luchando con esto, que aparentemente es un efecto muy simple, pero increíblemente no he encontrado ninguna forma intuitiva de hacerlo en Android.

Tengo un ListView y pude personalizar las imágenes de fondo para que el elemento seleccionado quede resaltado obteniendo un nuevo fondo dibujable. Esto lo hago creando un nuevo estilo en el que establezco el atributo android: listSelector para apuntar a un StateListDrawable donde he especificado qué elementos se pueden usar para cada estado.

Sin embargo, cada elemento ListView es LinearLayout donde tengo dos TextViews. Mi objetivo es poder cambiar el color del texto de estas vistas secundarias cada vez que se selecciona o presiona el elemento primario, al mismo tiempo que lo hace el fondo dibujable. Sé que hay una ColorStateList pero no se ha logrado establecer eso.

¿Alguien ha logrado que algo como esto funcione?

Gracias.


Ninguna de estas son respuestas posibles cuando su ListView está comprometido con un diseño que tiene múltiples vistas. Debe configurar las vistas de su hijo para:

android:duplicateParentState="true"

Ahora puede usar los métodos que otros han descrito anteriormente para declarar los colores de su TextView utilizando un selector como:

android:textColor="@drawable/my_row_selector"

y estoy seguro de que lo sabe, pero el selector puede ser tan simple como:

<?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/white" /> <item android:color="@color/black" /> </selector>

Como puede ver, los valores @color están permitidos. Espero que esto ayude.

Además, Android: state_pressed se utiliza junto con AdapterView.OnItemClickListener.


Para que funcione en la selección, use el siguiente código:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:color="#fff"/> <item android:state_activated="true" android:color="#fff"/> <item android:color="#000" /> </selector>

Aparentemente la clave es state_activated="true" .


También puede crear una carpeta res/color y agregar un archivo "text_selector.xml" con las siguientes líneas:

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_activated="true" android:color="#f0f"/> <item android:state_pressed="true" android:color="#f0f"/> <item android:color="#000"/> </selector>

Después de eso asignar en TextView:

android:textColor="@color/text_selector"


en tus textview propeties

android:textColor="@color/text_selector"

en res / color text_selector.xml

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