【发布时间】:2011-12-23 21:37:27
【问题描述】:
我想为我的应用程序提供 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里。
例如,从布局内的视图中引用值是可行的:
<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 中无效?我在the documentation 的任何地方都找不到这个限制...
【问题讨论】:
-
这可能与以下问题重复:stackoverflow.com/questions/7529574/…
-
@Martin M.,你发现了什么?
-
有什么解决方案吗?我撞到了完全相同的墙
-
这里有另一个最近的问题:stackoverflow.com/q/12115125/317889 同样的问题。谷歌整理一下。
-
显然这个问题在 Android L 预览版中得到了解决,在这里指定:code.google.com/p/android/issues/detail?id=26251
标签: android android-drawable android-theme android-attributes