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