android属性中格式引用的含义

Nou*_*vay 15 android android-layout android-theme android-styles

让我们从一个例子开始吧

<attr name="spinnerDropDownItemStyle" format="reference" />
Run Code Online (Sandbox Code Playgroud)

我如何区分并理解它?

我看到Android主题和风格揭秘 - 谷歌I/O 2016多次谈话,我仍然不明白这个参考的东西是如何工作的.

fro*_*tto 23

reference当属性引用另一个资源ID时使用format.例如,可以使用以下属性,如:

<!-- Declaration -->
<attr name="mydrawale" format="reference" />

<!-- Usage -->
app:mydrawable="@drawable/shape1"
Run Code Online (Sandbox Code Playgroud)

因此,像资源@layout/...,@color/...,@style/...是类型reference.

然而属性格式,如color,boolean等需要彩色文字(例如0x00FF00)和布尔文字(例如true分别地).

在您的情况下,spinnerDropDownItemStyle是一个获取资源的属性,@style/...其本身就是指向样式类型的资源条目的指针.

顺便说一句,您可以使用将格式设置为多种类型|.例如,对于以下的属性两者@color/mycolor0x00FF00是可接受的.

<attr name="mycolor" format="reference|color" />
Run Code Online (Sandbox Code Playgroud)