选择器需要Drawable属性吗?

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: Binary XML file line #4: tag requires a 'drawable' attribute or child tag defining a drawable

显然,它想让我使用drawable属性,但我不确定如何做到这一点并像我想要的那样更改背景。

1个回答

25
android:drawable="@color/red"

并在每个不同颜色的项目中添加此内容....


12
有人知道为什么需要这样做,而文档显示直接指定颜色应该可以吗?http://developer.android.com/guide/topics/resources/color-list-resource.html 这是由于针对旧的SDK吗? - qix
9
@Linus,如果您在指定颜色属性(例如使用选择器android:textColor="@color/...")时使用android:color,它将起作用(必须包含)。如果您正在指定可绘制属性(例如android:background="@..."),则它会查找android:drawable属性。 - karl
@karl 是的,我发布的链接确实是一个颜色(状态列表)资源,而不是drawable,而android:background需要drawable!那时我可能又太快地浏览了文档。 :) - qix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接