尝试将attr放在自定义可绘制xml中时出现问题。
以下是我的布局示例:
<Button
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/my_custom_btn"/>
然后我的自定义drawable“ my_custom_btn ”,我想用attr_my_custom_color指定它的颜色:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="?attr/attr_my_custom_color" /> <!-- pressed -->
</selector>
我的attr.xml文件:
<resources>
<attr name="attr_my_custom_color" format="color"/>
</resources>
我的style.xml文件,我的应用程序正在使用这个主题(在我的清单中):
<resources>
<style name="AppThemeTest" parent="Theme.AppCompat.Light.NoActionBar">
<item name="attr_my_custom_color">@color/primary</item>
</style>
当我在布局中测试时,我的attr工作正常,但当我把它放在我的自定义drawable中时,它不起作用。
它编译得很好,但是当我启动我的应用程序时,它会显示以下错误:
引起:org.xmlpull.v1.XmlPullParserException:二进制XML文件行#4:标记需要'drawable'属性或定义可绘制的子标记
你能帮我在自定义drawable中指定一个attr吗?
答案 0 :(得分:0)
you have to change background to drawable
<Button
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawable ="@drawable/my_custom_btn"/>