5

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

我在 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 行:标签需要“可绘制”属性或定义可绘制对象的子标签

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

如果我遗漏了什么,请告诉我。

我已经检查过这个链接 Android 颜色选择器不适用于自定义属性

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

提前致谢..

4

1 回答 1

5

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

于 2014-07-13T03:09:19.440 回答