带有自定义属性的Android selector.xml抛出XmlPullParserException

时间:2012-12-15 12:29:21

标签: android android-layout android-xml android-theme

我使用自定义属性遇到了问题。请帮忙..

我在attr.xml中定义了自定义属性

<attr format="reference" name="btnPressed" />
<attr format="reference" name="btnNormal" />

我有一个主题

<style name="MyTheme" parent="@style/Theme.Sherlock.Light.NoActionBar">
   <item name="btnPressed">@drawable/fav_icon</item>
   <item name="btnNormal">@drawable/not_fav_icon</item>
</style>

上面的fav_icon和not_fav_icon是我的照片。

我有一个为切换按钮定义的选择器favorite_btn.xml。

<selector xmlns:android="http://schemas.android.com/apk/res/android">   
    <item android:state_checked="true" android:drawable="?attr/btnPressed"/> 
    <item android:state_checked="false" android:drawable="?attr/btnNormal"/> 
    <item android:drawable="?attr/btnNormal"/>
</selector>

现在我将选择器设置为我的切换按钮。

        <ToggleButton
            android:id="@+id/station_fav_star"
            android:layout_width="42dip"
            android:layout_height="42dip"
            android:background="@drawable/favorite_btn"
            android:textOff=""
            android:textOn="" />

我正在将这个主题应用到我的活动中。但是我得到了Xml Parse Exception,如下所述。

引起:org.xmlpull.v1.XmlPullParserException:二进制XML文件行#11:标记需要一个'drawable'属性或定义drawable的子标记

我正在使用相同的方法使用自定义属性将图像设置为普通按钮,并且它正在工作。但是当在选择器中定义自定义属性时,它不起作用。

如果我遗漏了任何东西,请告诉我。

我已经查看了这个链接 Android color selector doesn't work with custom attributes

它表示颜色变化。就我而言,它们是可绘制的。如果还有其他方法,请提出解决方案。

提前致谢..

1 个答案:

答案 0 :(得分:4)

在L预览之前,Android不支持可绘制XML中的主题属性。在L预览之前,任何主题属性都将被视为无效值并抛出通胀异常或解析为0 / null,具体取决于类型。