<item> -Tag中的颜色引用,<layer-list> </layer-list> </item>内

时间:2012-03-23 13:54:07

标签: android reference colors

我对使用layer-list drawable中的引用提出疑问。

我想在我的应用中使用自定义按钮,由layer-list

组成
  • 这是按钮的最终可绘制btn.xml,由selector组成:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/btn_pressed" android:state_pressed="true"/>
    <item android:drawable="@drawable/btn_normal"/>
</selector>
  • 按下状态的可绘制btn_pressed看起来像这样:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape android:shape="rectangle" >
            <solid android:color="?custom_color" />
        </shape>
    </item>
    <item android:drawable="@drawable/btn_normal"/>
</layer-list>

基本部分是行,我将颜色声明为custom_color的引用,我定义如下。

  • attrs.xml:
<resources>
    <attr name="custom_color" format="reference|color" />
</resources>
  • 的themes.xml:
<resources>
    <style name="MyTheme" parent="android:Theme.Light.NoTitleBar">
        <item name="custom_color">#ff33b5e5</item>
    </style>
</resources>

Eclipse根本没有给我任何错误,它编译得很好。 但是当我在我的ICS Nexus S或仿真器(无论是什么版本)上启动应用程序时,它会崩溃。 Logcat指出以下内容:

  

03-23 14:33:38.832:E / AndroidRuntime(636):引起:android.content.res.Resources $ NotFoundException:来自可绘制资源ID的文件res / drawable / btn.xml#0x7f020006

     

[...]

     

03-23 14:33:38.832:E / AndroidRuntime(636):引起:android.content.res.Resources $ NotFoundException:来自可绘制资源ID的文件res / drawable / btn_pressed.xml#0x7f020009

如果我注释掉shape中的layer-list - 元素,或者将颜色设置为硬编码,那么一切正常。因此,在图层列表中引用属性似乎存在问题。

那么,有没有人知道这个问题的解决方案?我想更改该图层列表中的颜色,具体取决于我的应用程序正在使用的主题。

2 个答案:

答案 0 :(得分:1)

好的,好像这是一个在Android L.发布之前没有看过的错误 有关Android问题跟踪器的更多详细信息:Issue 26251

它应该在Android L中修复,但至少在模拟器中使用Android L Preview进行测试它似乎还没有完全发挥作用。至少它不会让应用程序崩溃,但它不是显示正确的颜色,而是给我透明度(#00ffffff)。也许这不是设备上的情况和/或Android L稳定版一旦发布。

答案 1 :(得分:0)

尝试android:color="@color/custom_color"