Tengo un selector dibujable como fondo para cada elemento en un ListView
para resaltar la fila seleccionada. Todo funciona bien en Ice Cream Sandwich, pero parece que no funciona en Jelly Bean. No puedo encontrar ninguna documentación que indique qué cambios podrían haber causado que deje de funcionar y qué debo hacer para solucionarlo.El selector Drawable no funciona en Jelly Bean
Al no funcionar, me refiero a cuando hago clic en una fila en el ListView
el color de fondo del elemento no está cambiando el color @color/blue
, pero lo hace en ICS.
Este es el código que estoy usando el selector (listing_selector.xml):
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_focused="true" android:drawable="@color/blue" />
<item android:state_pressed="true" android:drawable="@color/blue" />
<item android:state_activated="true" android:drawable="@color/blue_selected" />
<item android:state_selected="true" android:drawable="@color/blue_selected" />
<item android:drawable="@android:color/transparent" />
</selector>
Ésta es la disposición del elemento ListView
:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:background="@color/listing_selector"
>
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
/>
</RelativeLayout>
Esta el recurso de color azul:
<resources>
<color name="blue">#ff33b5e5</color>
</resources>
ACTUALIZACIÓN 1:
intentado mover el selector de la carpeta color
a la carpeta drawable
y actualizar el código para esto:
android:background="@drawable/listing_selector"
ACTUALIZACIÓN 2:
Además, en el ListView
, intentado añadir esto:
<ListView android:id="@android:id/list"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:listSelector="@drawable/listing_selector"
/>
ACTUALIZACIÓN 3:
Pensé que podría ser algo en mi código, pero eliminé todo el código de onListItemClick
del ListView
y todavía el selector
no está funcionando.
ACTUALIZACIÓN 4:
me he reducido a state_selected
o state_activated
que no funciona como, state_pressed
parece estar funcionando
Update 5:
creo que estaba equivocado . No creo que el selector sea reconocido, en absoluto. Estaba confundiendo el ListView
resaltado incorporado como mi selector. Ahora me pregunto si tiene algo que ver con la configuración de mi proyecto. Tengo el selector en una clase de biblioteca. Tal vez algo cambió con eso de ICS a JB, sin embargo, mover el selector al proyecto de mi aplicación no pareció solucionarlo.
ACTUALIZACIÓN 6:
Ok, después de tirar un poco más el pelo, me he reducido, de nuevo, ya sea a state_selected
o state_activated
no ser reconocido, como cambiar el color de state_pressed
funciona, lo que significa mi selector está siendo reconocido. De los comentarios parece ser algo con mi aplicación específicamente, ya que otros han podido conseguir selectores trabajando con Jelly Bean.
Aunque hay algo más que es interesante es que no se reconoce el cambio del valor de drawable
para el estado predeterminado. Donde tengo color/transparent
, pensaría que cambiar eso a un color haría que el listado cambiara a ese color, pero no es así.
Además, esto tampoco funciona en ICS.
ACTUALIZACIÓN 7:
Después de tirar aún más el pelo, he descubierto que, con una presión prolongada sobre un elemento de menú resultados en el color de ese artículo está cambiando. Simplemente haciendo clic en un elemento todavía no funciona. Ni siquiera estoy seguro de lo que significa.
** Actualización final: **
me rindo, me quita el selector y sólo estoy refrescando la ListView
de clic y recordar la posición de clic y resaltando desde el código. No es ideal, pero no vale la pena el esfuerzo para intentar arreglarlo.
Cuando intentó su ACTUALIZACIÓN 2, ¿eliminó el android: fondo de su elemento de la lista. Utilizo android: listSelector para la lista, y luego no android: background se define para el elemento de la lista; y todo funciona para mi Además, no estoy seguro de si está relacionado, pero también tengo Android: cacheColorHint = "@ null". – Chris
@Chris Yea, probé que tampoco funcionó. Agregué una nueva actualización (# 5). Me pregunto si el problema es con la forma en que tengo la configuración de mi proyecto. –
La configuración del proyecto no debe estar relacionada con este problema, suponiendo que tenga sus dependencias de Android mostrando ... qué eclipse básicamente lo obliga a hacer. Sugerencia sobre la cosa dibujable vs color, use android: color para selectores xml en res/color, y android: dibujable para selectores xml en res/dibujable. Por lo que tiene probablemente no haya ninguna razón para usarlo como dibujable en lugar de como color. Y los colores implícitamente tienen opacidad completa, por lo que # ff33b5e5 es lo mismo que # 33b5e5 – syklon