使用之间的区别是什么?和@作为样式限定符?

时间:2015-04-08 09:54:38

标签: android styles

为样式属性设置单独的?-qualifier的目的是什么?为什么不使用@ -qualifier?

    <Button
        style="?android:attr/buttonBarButtonStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@android:drawable/ic_media_play" />  

1 个答案:

答案 0 :(得分:1)

样式属性资源允许您引用当前应用主题中的属性值。引用样式属性允许您通过设置UI元素的样式来自定义UI元素的外观,以匹配当前主题提供的标准变体,而不是提供硬编码值。引用样式属性实质上是说,“在当前主题中使用由此属性定义的样式。”

要引用样式属性,名称语法几乎与普通资源格式相同,但使用问号(?)代替at符号(?),资源类型部分是可选的。例如:

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

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

这里,android:textColor属性指定当前主题中样式属性的名称。 Android现在使用应用于android:textColorSecondary样式属性的值作为此窗口小部件中android:textColor的值。因为系统资源工具知道在此上下文中需要属性资源,所以您不需要显式声明类型(可以是?android:attr / textColorSecondary) - 您可以排除attr类型。

<强> Source: HERE