【问题标题】:What's the difference between @android: and ?android: [duplicate]@android: 和 ?android: [重复] 有什么区别
【发布时间】:2013-05-23 12:44:41
【问题描述】:

有什么区别

android:color="@android:color/black"

style="?android:attr/borderlessButtonStyle" 

@? 有什么区别?

这是无法通过谷歌搜索的问题之一,或ogooglebar

【问题讨论】:

  • 来自Accessing Resources:要引用样式属性,名称语法几乎与普通资源格式相同,但不是(@),而是使用问号(?) ,并且资源类型部分是可选的。
  • 这不是不可搜索的...... :)
  • 这个问题的 url slug 很有趣。
  • @PankajKumar 直到我问它,Google 才把它卡在top 附近。请注意未找到重复的问题。

标签: android android-layout android-xml


【解决方案1】:

@android:color/black

表示您指的是在 android 命名空间中定义的颜色。 这个命名空间就是框架的命名空间。

在这个文件中搜索黑色:black color in framework

style="?android:attr/borderlessButtonStyle"

"?android:attr/borderlessButtonStyle" 仅表示“使用命名空间android 中名为borderlessButtonStyle 的属性定义的值”。此属性及其值是 Android 框架“android”命名空间的一部分。

borderlessButtonStyle in framework


已编辑:来自此Referencing Style Attributes

这个链接告诉我们:

例如,以下是如何引用属性来设置文本颜色以匹配系统主题的“主要”文本颜色:

<EditText id="text"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="?android:textColorSecondary"
    android:text="@string/hello_world" />

【讨论】:

  • 哇,这在没有实际回答问题的情况下确实是正确的。
  • 检查我编辑的答案并告诉我系统主题是什么?
【解决方案2】:

(来自this答案及其cmets)

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

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

看到这个

【讨论】:

    【解决方案3】:
    猜你喜欢
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    相关资源
    最近更新 更多