androidstatelistdrawable

Statelist drawable android:state_enabled not working in xml


I'm trying to add to my existing statelist drawable, a disabled state and it just doesn't work.

originally, I had this code:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/store_item_background_selected" android:state_selected="true"/>
<item android:drawable="@drawable/store_item_background"/>
</selector>

and it worked perfectly for selected and not selected.

now I wanted to add the android:state_enabled="false" like this:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/store_item_background_selected" android:state_selected="true"/>
<item android:drawable="@drawable/store_item_background" android:state_enabled="true"/>
<item android:drawable="@drawable/store_item_background_disabled"/>
</selector>

and it never switches to the disabled image.

any ideas?

EDIT

I added setEnabled(false) to the constructor of the view I'm setting this statelist drwable and now I see the disabled image, but once I set the view to enabled, it won't switch to disabled again.


Solution

  • Try this

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    
    <item android:drawable="@drawable/store_item_background_selected" android:state_enabled="true" android:state_selected="true"/>
    <item android:drawable="@drawable/store_item_background" android:state_enabled="true"/>
    <item android:drawable="@drawable/store_item_background_disabled" android:state_enabled="false"/>
    
    </selector>