ListSelector se aplica a toda la lista

Tengo una lista simple con un selector de listas como ese.

  

Como puede ver en android: listSelector = “# 99000000” pero el color “alpha negro” se aplica a toda la lista, no al elemento seleccionado.


Así que esto es lo que tengo ahora, pero toda la lista todavía se vuelve negra

:: listview_background.xml

       

:: colors.xml

  #96FFFFFF #66000000 #CA000000  

:: la etiqueta xml en mi lista

 android:listSelector="@drawable/listview_background" 

Yo tuve el mismo problema. Tengo una imagen de fondo personalizada, y no quiero tener que hacer variantes de esa imagen de fondo porque sería tedioso representar todos los diferentes estados.

Así que quiero hacer lo obvio, tener una barra semitransparente que se superpone sobre el elemento de lista enfocado y cuando el usuario toca la tecla “enter” o lo que sea, parpadea al color de superposición presionado que es más llamativo y algo más opaco

La solución fue mantenerse alejado de cualquier @color o @drawable que haga referencia a un color dentro de listSelector. Creé dos archivos .png de 3×3 píxeles. Cada uno guardado con la capa gamma. En mi caso, son dos del mismo color, cada uno mezclado en Gimp con una transparencia diferente en la capa de color. Entonces, cuando seleccionas un objeto, obtienes una superposición con un 25% de color, y cuando lo presionas obtienes un png con un 50% de color. Los puse en mis dibujables como bg_list_item_pressed.png y bg_list_item_highlighted.png

Luego configuro mi selector de lista para:

 < ?xml version="1.0" encoding="utf-8"?>         

Luego agregué mis atributos de ListSelector a mi ListView en mi diseño xml:

 android:listSelector="@drawable/list_selector" android:drawSelectorOnTop="true" 

Ahora funciona exactamente como quiero que funcione. Incluyendo usar el D-pad para seleccionar una fila, y hacer clic en ella con enter. Obteniendo el resaltado y presionando los colores exactamente como deberían ser.

Estaba teniendo el mismo problema y mientras miraba uno de los archivos XML dibujables de la plataforma noté una forma de eliminar la necesidad de crear un archivo de imagen solo para un color, creando una forma en XML.

Por ejemplo, en lugar de:

  

Hacer:

      

Más allá de simplemente crear un color simple dibujable, la forma es flexible, similar a un simple objeto vectorial. Todos los detalles se pueden encontrar aquí: http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape

Si está configurando un diseño de fila para cada elemento de la lista, así es como lo hago. Tenga en cuenta el valor transparente establecido en listSelector. (Por razones de brevedad, eliminé colors.xml).

main.xml

    

row.xml

  ...  

list_selector.xml

     

Jax,

Estaba tratando de averiguar por qué mi lista completa cambiaba de color y establecía listSelector, y descubrí que esto es exactamente lo que se supone que debe hacer, es decir, estamos configurando el color para toda la lista, y no la fila, que es lo que querer.

Esto es lo que quiere hacer: supongo que tiene un ListView definido en XML. Y para este ListView, supongo que está utilizando un adaptador de algún tipo para establecer presentar los datos. También para este adaptador, está utilizando alguna vista de fila que se define en XML. Lo que quiere hacer es establecer el fondo de este elemento de fila así:

 < ?xml version="1.0" encoding="utf-8"?>    

Aquí está mi textview_selector.xml almacenado en drawable:

 < ?xml version="1.0" encoding="utf-8"?>     

Espero que esto ayude

El selector de lista es un StateListDrawable : contiene una referencia a múltiples derivables para cada estado que puede contener la lista, como seleccionada, enfocada, presionada, deshabilitada …

En su caso, al establecer un solo color, la lista está dibujando # 9000 para cada estado individual.

Necesita definir un StateListDrawable como se describió anteriormente, con un XML similar al siguiente. Esto es lo que configura en su android:listSelector atributo android:listSelector .

 < ?xml version="1.0" encoding="utf-8"?>      

O bien, para configurar el mismo selector de lista para todas las listas en su aplicación, puede anular el selector en el tema Widget.ListView :

  

No siempre es necesario crear una imagen, puede definir una forma

 < ?xml version="1.0" encoding="utf-8"?>