Ich möchte 2 auswählbare Themen für meine Anwendung haben. Zu diesem Zweck habe ich einige Attribute wie folgt definiert:
<attr format="color" name="item_background" />
Dann habe ich beide Themen wie folgt erstellt:
<style name="ThemeA">
<item name="item_background">#123456</item>
</style>
<style name="ThemeB">
<item name="item_background">#ABCDEF</item>
</style>
Diese Methode funktioniert hervorragend und ermöglicht mir das einfache Erstellen und Ändern mehrerer Themen. Das Problem ist, dass es anscheinend nur in Ansichten und nicht in Drawables verwendet werden kann .
Das Verweisen auf einen Wert aus einer Ansicht in einem Layout funktioniert beispielsweise wie folgt:
<TextView android:background="?item_background" />
Aber dasselbe in einem Drawable zu tun, bedeutet nicht:
<shape android:shape="rectangle">
<solid android:color="?item_background" />
</shape>
Ich erhalte diesen Fehler beim Ausführen der Anwendung:
java.lang.UnsupportedOperationException: Can't convert to color: type=0x2
Wenn ?item_background
ich keine fest codierte Farbe verwende, funktioniert dies, aber ich kann meine Themen nicht verwenden. Ich habe es auch versucht ?attr:item_background
, aber das gleiche passiert.
Wie könnte ich das machen? Und warum funktioniert es in Ansichten, aber nicht in Drawables? Ich kann diese Einschränkung nirgendwo in der Dokumentation finden ...