属性是否可以引用其同级属性,即同一<style>
中存在的属性?
例如,
<style name="Widget.A">
<item name="customBackground">something</item>
<item name="android:background">?customBackground</item>
</style>
将产生错误,因为?
限定符仅引用应用主题中存在的属性,而不是同一样式中的属性。
此功能对于我的库来说是必需的,以便与所有版本的Android正确兼容。
答案 0 :(得分:2)
答案 1 :(得分:0)
您的代码产生错误,因为没有已知属性“customBackground”。但您可以通过在同一文件夹(res/values/
)中创建XML文件来创建它,其中包含以下内容:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="Widget.A">
<attr name="customBackground" format="reference"/>
</declare-styleable>
</resources>
这个声明告诉我们你有一个样式 Widget.A ,它有一个名为 customBackground 的参数,在这个例子中它的有效值是对其他的引用属性。当然,您可以将format
属性设置为您需要的任何属性。不幸的是,Android文档没有包含此类声明的明确说明,因此我建议您查看Android源代码中的attrs.xml。