如何将attr放入自定义drawable中?

时间:2016-09-19 07:48:23

标签: android xml styles drawable attr

尝试将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吗?

1 个答案:

答案 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"/>