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

Posted

技术标签:

【中文标题】使用选择器作为颜色的形状不起作用【英文标题】:Shape with selector as color doesn't works 【发布时间】:2015-02-17 17:09:59 【问题描述】:

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

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: android:/>

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

此可绘制对象应用于CheckBox 背景。

【问题讨论】:

旧版本的 Android 似乎不支持它。如果你想支持它们,你需要为每个 satate 创建不同的 shape drawable。 drawable 中的颜色状态列表仅在运行 API 21+ 的设备上受支持。 【参考方案1】:

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

<?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: android:/>

         <corners android:radius="10dp" />
      </shape>
   </item>
   <item>
      <shape android:shape="rectangle" >
          <solid android:color="@color/my_deselec"/>

         <size android: android:/>

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

</selector>

【讨论】:

【参考方案2】:

以这种方式使用

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

【讨论】:

以上是关于使用选择器作为颜色的形状不起作用的主要内容,如果未能解决你的问题,请参考以下文章

频谱颜色选择器在 Internet Explorer 中不起作用

使用jquery动态更改背景颜色后,背景颜色的CSS悬停选择器不起作用

切换 textColor 不起作用

为啥身体上的背景颜色不起作用? [复制]

段落选择器内的标题不起作用

将变量作为 JQuery CSS 选择器传递不起作用