1

在我的attr.xml中,我定义descriptor_bg为:

</declare-styleable>    
    <attr name="descriptor_bg" format="reference|color" />
    </declare-styleable>

并在style.xml

<style name="Theme_blue">
    <item name="descriptor_bg">@android:color/black</item>
    <item name="android:windowNoTitle">true</item>
</style> 

我使用了上述属性,例如:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<gradient
    android:angle="90" />
<solid android:color="@attr/descriptor_bg"/>
<stroke
    android:width="2dp"
    android:color="@color/blue_stroke_bg" /> 

但是我遇到了一个例外,例如:

android.content.res.Resources$NotFoundException: File res/drawable-mdpi/descriptor_bg.xml

来自可绘制资源 ID #0x7f020006

java.lang.UnsupportedOperationException: Can't convert to color: type=0x1
File res/drawable-mdpi/descriptor_bg.xml from drawable resource ID #0x7f020006

谁能帮帮我吗?

4

2 回答 2

2

我认为正确的语法是?attr/descriptor_bg

不幸的是,这可能无法解决您的问题,因为 XML 可绘制对象不支持主题属性。不过,这已在 L-preview 版本中得到修复。

于 2014-09-30T13:11:27.167 回答
0

我想您需要坚持使用单一格式标识符,例如:

<attr name="descriptor_bg" format="color" />

它应该自动从 RGB 值或参考转换颜色。

于 2013-04-04T09:59:15.093 回答