ListView item background via custom selector
        Posted  
        
            by Gil
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Gil
        
        
        
        Published on 2010-04-01T16:44:42Z
        Indexed on 
            2010/04/01
            17:53 UTC
        
        
        Read the original article
        Hit count: 812
        
Is it possible to apply a custom background to each Listview item via the list selector?
The default selector specifies @android:color/transparent for the state_focused="false" case, but changing this to some custom drawable doesn't affect items that aren't selected. Romain Guy seems to suggest in this answer that this is possible.
I'm currently achieving the same affect by using a custom background on each view and hiding it when the item is selected/focused/whatever so the selector is shown, but it'd be more elegant to have this all defined in one place.
For reference, this is the selector I'm using to try and get this working:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="false"
        android:drawable="@drawable/list_item_gradient" />
    <!-- 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" />
    <item android:state_focused="true" android:state_pressed="true"
        android:drawable="@drawable/list_selector_background_transition" />
    <item android:state_focused="false" android:state_pressed="true"
        android:drawable="@drawable/list_selector_background_transition" />
    <item android:state_focused="true"
        android:drawable="@drawable/list_selector_background_focus" />
</selector>
And this is how I'm setting the selector:
<ListView
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:listSelector="@drawable/list_selector_background" />    
Thanks in advance for any help!
© Stack Overflow or respective owner