我想为我的应用程序有2个可选的主题。 为了做到这一点,我定义了一些属性,如下所示: <attr format="color" name="item_background" /> 然后,我创build了这样的主题: <style name="ThemeA"> <item name="item_background">#123456</item> </style> <style name="ThemeB"> <item name="item_background">#ABCDEF</item> </style> 这种方法效果很好,使我能够轻松地创build和修改几个主题。 问题是, 它似乎只能在视图中使用,而不能在Drawable中使用 。 例如,从布局中的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 ,但是也是一样的。 我怎么能这样做? 为什么它在视图中工作,而不是在Drawable中? 我无法在文档中的任何位置find此限制…