使用选择器作为颜色的形状不起作用

时间:2015-02-17 17:09:59

标签: android android-selector android-shape

我想创建一个选择器为纯色的形状。

在Android 5.0+上,此代码可以正常运行,但在4.X上,它不起作用。

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>

此drawable适用于CheckBox背景。

2 个答案:

答案 0 :(得分:4)

你应该改变命令来写这样的状态并在项目中使用你的形状:

<?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>

答案 1 :(得分:1)

以这种方式使用

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:state_pressed="true" >
 <shape>.......</shape> 
</item>