2011-12-13 16 views
5

He configurado un selector de lista personalizado para un ListView simple, pero cuando selecciono un elemento, el ListView completo se vuelve azul. No entiendo dónde está el problema.Resalte el comportamiento misterioso en ListView

Esta es mi ListView:

<ListView android:id="@+id/TopListView" android:layout_width="fill_parent" 
    android:listSelector="@drawable/regular_selector" 
    android:layout_height="wrap_content"> 
</ListView> 

y es la regular_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_enabled="false" android:state_focused="true" 
     android:drawable="@color/transparent" /> 
    <item android:state_pressed="true" 
     android:drawable="@color/blue" /> 
    <item android:state_focused="true" 
     android:drawable="@color/blue" /> 
</selector> 
+0

¿Tiene la solvencia? si no, ¿puedes decir cuál es tu resultado esperado? – havexz

Respuesta

0

supongo que es el problema habitual. Usted tiene que fijar esto en su vista de lista:

android:cacheColorHint="#00000000" 

El objetivo es desactivar una optimización que hace el marco para mejorar el rendimiento de dibujo durante las operaciones de desplazamiento.

+0

Es el mismo resultado ... – Maxime

0

¡Cuando configuro el elemento regular_selector.xml como elemento de vista de lista, funciona!

8

Estaba teniendo el mismo problema que el resaltado de toda la vista de lista, cuando se usa un color como fondo. Curiosamente esto sólo ocurrió a continuación api 11.

solución fue utilizar una forma sólida estirable para envolver el color:

list_selector_shaped_background_press.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" > 
    <solid android:color="@color/list_selector_pressed"/> 
</shape> 

List_selector_background.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android" > 

     <item android:state_window_focused="false" 
     android:drawable="@android:color/transparent" /> 

    <!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. --> 
    <item android:state_focused="true" android:state_enabled="false" 
     android:state_pressed="true" 
     android:drawable="@drawable/list_selector_background_disabled" /> 
    <item android:state_focused="true" android:state_enabled="false" 
     android:drawable="@drawable/list_selector_background_disabled" /> 

    <!-- this has to be in a shaped drawable otherwise the whole list is highlighted selects --> 
    <item android:state_focused="true" android:state_pressed="true" 
     android:drawable="@drawable/list_selector_shaped_background_pressed" /> 

     <item android:state_focused="false" android:state_pressed="true" 
     android:drawable="@drawable/list_selector_shaped_background_pressed" /> 

    <item android:state_focused="true" 
     android:drawable="@drawable/list_selector_background_focus" /> 

</selector> 
por lo que
+0

Muchas gracias ... Había estado buscando una solución desde hace un par de semanas. ¡Esto realmente ayudó! :) – Scrat

Cuestiones relacionadas