【问题标题】:what is the real difference between "android:" and "attr"?“android:”和“attr”之间的真正区别是什么?
【发布时间】:2015-08-09 00:58:36
【问题描述】:

当我尝试使用 activity_main.xml 中的某些资源时

    android:minHeight="?android:actionBarSize"
    android:background="?attr/colorPrimary"

我发现了一些我无法理解的东西。我知道当 XML 解析器读取文档时,“android:”表示 系统级属性,“attr”表示我的主题中的属性(对?),但是为什么某些属性应该添加包名“android:”,尽管有相同的属性?比如我可以像这样在我的styles.xml中定义属性

    <item name="colorPrimaryDark">@color/purple</item>

但我也可以定义像

这样的属性
    <item name="android:colorPrimaryDark">@color/purple</item>

我的英语很差,所以我没有解释我想弄清楚什么。

【问题讨论】:

标签: android xml styles themes


【解决方案1】:

(来自this答案)

使用问号前缀 ID 表示您想要访问在样式主题中定义的样式属性,而不是硬编码该属性,如引用样式属性中所述。

更具体地说,?意味着额外的间接级别。将其视为取消引用主题属性以获取它指向的资源,而不是引用属性本身。你可以通过?android:attr/foo看到这个

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    • 2018-06-12
    • 2012-06-02
    • 2020-10-08
    • 2018-01-21
    • 1970-01-01
    • 2018-04-10
    相关资源
    最近更新 更多