Quiero tener 2 temas seleccionables para mi aplicación. Para hacer eso, definí algunos atributos, como este:
<attr format="color" name="item_background" />
Luego, creé ambos temas, así:
<style name="ThemeA">
<item name="item_background">#123456</item>
</style>
<style name="ThemeB">
<item name="item_background">#ABCDEF</item>
</style>
Este método funciona muy bien, permitiéndome crear y modificar varios temas fácilmente. El problema es que parece que solo se puede usar en Views y no en Drawables .
Por ejemplo, hacer referencia a un valor de una Vista dentro de un diseño funciona:
<TextView android:background="?item_background" />
Pero hacer lo mismo en un Drawable no:
<shape android:shape="rectangle">
<solid android:color="?item_background" />
</shape>
Recibo este error al ejecutar la aplicación:
java.lang.UnsupportedOperationException: Can't convert to color: type=0x2
Si en lugar de ?item_background
usar un color codificado, funciona, pero eso no me permite usar mis temas. También lo intenté ?attr:item_background
, pero pasa lo mismo.
¿Cómo podría hacer esto? ¿Y por qué funciona en Views pero no en Drawables? No puedo encontrar esta limitación en ninguna parte de la documentación ...