自定义属性不适用于android中的主题

时间:2013-04-04 09:51:04

标签: android

在我的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

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

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

不幸的是,这可能无法解决您的问题,因为XML drawables不支持主题属性。在L-preview版本中,这是fixed

答案 1 :(得分:0)

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

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

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