我在使用自定义属性时遇到了问题。请帮助..
我在 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="" />
我正在将主题应用到我的 Activity 中。但是我收到如下所述的 Xml 解析异常。
Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #11: tag requires a 'drawable' attribute or child tag defining a drawable
原因:我正在使用相同的方法使用自定义属性将图像设置为普通按钮并且它正在工作。但是当在选择器中定义自定义属性时,它不起作用。
如果我遗漏了什么,请告诉我。
我已经检查过这个链接 Android color selector doesn't work with custom attributes
因为它说明了颜色变化。在我的例子中,它们是可绘制的。如果有任何其他解决方法,请提出解决方案。
提前致谢..
最佳答案
Android 直到 L 预览版才支持可绘制 XML 中的主题属性。在 L 预览之前,任何主题属性都将被视为无效值并抛出膨胀异常或解析为 0/null,具体取决于类型。
关于具有自定义属性的 Android selector.xml 抛出 XmlPullParserException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13892189/