Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 393
piojo Avatar asked Sep 12 '12 07:09

piojo


1 Answers

Although this is a really old question, one should write a selector in this order:

  1. disabled state first
  2. pressed state second
  3. normal state last
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:exitFadeDuration="@android:integer/config_shortAnimTime">
    <item android:drawable="@color/due_gray" android:state_enabled="false" />
    <item android:drawable="@color/whizdm_primary_dark_color" android:state_pressed="true" />
    <item android:drawable="@color/whizdm_primary_color" />
</selector>
like image 70
Dr. aNdRO Avatar answered Sep 22 '22 08:09

Dr. aNdRO