Я хочу иметь две темы для моего приложения. Для этого я определил некоторые атрибуты, например:
<attr format="color" name="item_background" />
Затем я создал обе темы, например:
<style name="ThemeA">
<item name="item_background">#123456</item>
</style>
<style name="ThemeB">
<item name="item_background">#ABCDEF</item>
</style>
Этот метод отлично работает, что позволяет мне легко создавать и изменять несколько тем. Проблема в том, что кажется, что ее можно использовать только в представлениях, а не в Drawables.
Например, ссылка на значение из представления внутри макета работает:
<TextView android:background="?item_background" />
Но делать то же самое в Drawable не делает:
<shape android:shape="rectangle">
<solid android:color="?item_background" />
</shape>
Я получаю эту ошибку при запуске приложения:
java.lang.UnsupportedOperationException: Can't convert to color: type=0x2
Если вместо ?item_background
я использую жесткий код, он работает, но это не позволяет мне использовать мои темы. Я также пробовал ?attr:item_background
, но то же самое происходит.
Как я могу это сделать? И почему он работает в Views, но не в Drawables? Я не могу найти это ограничение где-нибудь в документации...