我对使用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
的引用,我定义如下。
<resources>
<attr name="custom_color" format="reference|color" />
</resources>
<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
- 元素,或者将颜色设置为硬编码,那么一切正常。因此,在图层列表中引用属性似乎存在问题。
那么,有没有人知道这个问题的解决方案?我想更改该图层列表中的颜色,具体取决于我的应用程序正在使用的主题。
答案 0 :(得分:1)
好的,好像这是一个在Android L.发布之前没有看过的错误 有关Android问题跟踪器的更多详细信息:Issue 26251
它应该在Android L中修复,但至少在模拟器中使用Android L Preview进行测试它似乎还没有完全发挥作用。至少它不会让应用程序崩溃,但它不是显示正确的颜色,而是给我透明度(#00ffffff)。也许这不是设备上的情况和/或Android L稳定版一旦发布。
答案 1 :(得分:0)
尝试android:color="@color/custom_color"