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

msa*_*sal 5 android reference colors

我有一个关于在a中使用引用的问题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>
Run Code Online (Sandbox Code Playgroud)
  • 压制状态 - drawable 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>
Run Code Online (Sandbox Code Playgroud)

关键部分是线,我声明颜色作为参考custom_color,我定义如下.

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

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,或设置硬编码的颜色,一切正常.因此,在图层列表中引用属性似乎存在问题.

那么,有没有人知道这个问题的解决方案?我想根据我的应用程序使用的主题更改该图层列表中的颜色.

msa*_*sal 1

好吧,看来这是一个直到 Android L 才被关注的错误。
有关 Android 问题跟踪器的更多详细信息:问题 26251

它应该在 Android L 中得到修复,但至少在模拟器中使用 Android L 预览版进行测试时,它似乎还不能完全工作。至少它不会使应用程序崩溃,但它不会显示正确的颜色,只会给我透明度(#00ffffff)。也许设备上和/或 Android L 稳定版发布后情况并非如此。