2

一个属性是否可以引用它的兄弟属性,即存在于同一个属性中的那些<style>

例如,

<style name="Widget.A">
  <item name="customBackground">something</item>
  <item name="android:background">?customBackground</item>
</style>

将产生错误,因为?限定符仅引用应用主题中存在的属性,而不是同一样式中的属性。

为了与所有版本的 Android 正确兼容,此功能对于我的库来说是必需的。

4

2 回答 2

2

不,? 语法只允许引用当前主题的属性。您必须重新编写样式以在自定义主题中定义该值。

于 2011-06-27T01:56:56.223 回答
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

于 2011-06-26T21:00:42.180 回答