У меня есть вопрос об использовании ссылок в 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: файл res / drawable / btn.xml из ID ресурса для рисования # 0x7f020006
[...]
03-23 14: 33: 38.832: E / AndroidRuntime (636): вызвано: android.content.res.Ресурсы $ NotFoundException: файл res / drawable / btn_pressed.xml из идентификатора нарисованного ресурса # 0x7f020009
Если я закомментирую, элемент shape
в layer-list
или установим цвет жесткозакодировано, все работает.Так что, похоже, существует проблема со ссылкой на атрибуты в списке слоев.
Итак, кто-нибудь знает решение этой проблемы?Я хочу изменить цвета в этом списке слоев в зависимости от темы, которую использует мое приложение.