Search code examples
androidandroid-selectorandroid-shape

Shape with selector as color doesn't works


I want to create a shape with selector as solid color.

On Android 5.0+, this code works perfectly, but on 4.X, it doesn't works.

shape.xml :

<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/my_selector"/>

    <size android:height="40dp" android:width="40dp"/>

    <corners android:radius="10dp" />
</shape>

my_selector.xml

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:color="@color/color_1"
        android:state_checked="false"/>

    <item
        android:color="@color/color_2"
        android:state_checked="true"/>
</selector>

This drawable is applied to CheckBox background.


Solution

  • you should change order to write state like this and use your shape in item:

    <?xml version="1.0" encoding="UTF-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    
       <item android:state_checked="true">
           <shape android:shape="rectangle" >
              <solid android:color="@color/my_selector"/>
    
             <size android:height="40dp" android:width="40dp"/>
    
             <corners android:radius="10dp" />
          </shape>
       </item>
       <item>
          <shape android:shape="rectangle" >
              <solid android:color="@color/my_deselec"/>
    
             <size android:height="40dp" android:width="40dp"/>
    
             <corners android:radius="10dp" />
          </shape>
       </item>
    
    </selector>