我想为我的应用程序选择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中使用。
例如,从布局内的View引用值可以工作:
<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中使用呢?我在文档的任何地方都找不到此限制...