5
如何从可绘制对象引用样式属性?
我想为我的应用程序选择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中使用呢?我在文档的任何地方都找不到此限制...