使用选择器作为颜色的形状不起作用
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 中不起作用