我使用自定义属性遇到了问题。请帮忙..
我在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
它表示颜色变化。就我而言,它们是可绘制的。如果还有其他方法,请提出解决方案。
提前致谢..
答案 0 :(得分:4)
在L预览之前,Android不支持可绘制XML中的主题属性。在L预览之前,任何主题属性都将被视为无效值并抛出通胀异常或解析为0 / null,具体取决于类型。