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

标签 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="" />

我正在将主题应用到我的 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/

相关文章:

java - 即使在代码中手动设置位置后,标记也不会显示在 map 上

android - 联系人组列表的隐式 Intent

android - 如何指定android :textColor on pressed ListItem?

android - 如何使 colorPrimary 不显示为工具栏背景

java - 如何解析表格第三列的单元格?

Android 印度尼西亚语文本转语音

Android 布局方向未在运行时语言更改时更新

Android 复杂表格布局

android - 在android中动态调整 fragment 大小

android - 有没有办法使用可变的广告横幅尺寸?