2012-04-03 124 views
11
<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" 
      android:color="#ff0000"/> 
    <item android:state_focused="true" 
      android:color="#0000ff"/> 
    <item android:color="#00ff00"/> 
</selector> 

我有这个选择器,我试图用它来改变一个Linearlayout的背景。每当我尝试应用它,但是我总是收到此错误信息:选择器需要可绘制属性?

org.xmlpull.v1.XmlPullParserException:二进制XML文件行#4:标签需要“绘制”属性或子标签定义绘制

显然,它希望我使用可绘制attibute,但我不知道如何做到这一点,并改变我想要的背景。

回答

24
android:drawable="@color/red" 

,并与不同势颜色每一个项目添加此....

+0

谢谢主席先生,我的大脑不能正常工作。 – Garzahd 2012-04-03 17:40:08

+12

任何人都知道为什么这是必需的,当文档显示直接指定颜色应该工作? http://developer.android.com/guide/topics/resources/color-list-resource.html是否由于针对旧的SDK? – qix 2013-01-02 02:14:45

+7

@Linus,如果你指定一个颜色属性(即,使用类似于android:textColor =“@ color/...”的选择器),使用'android:color'将可以工作(并且必须包含)。如果你指定了一个drawable属性(即'android:background =“@ ...”'),它会寻找一个'android:drawable'属性。 – karl 2014-01-10 00:26:10