Я хочу иметь 2 выбираемые темы для моего приложения. Для этого я определил некоторые атрибуты, например:
<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>
Этот метод отлично работает, позволяя мне легко создавать и изменять несколько тем. Проблема в том, что кажется, что его можно использовать только во Views, а не в 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? Я не могу найти это ограничение нигде в документации ...