Значение ссылки формата в атрибуте android

Давайте начнем с примера

<attr name="spinnerDropDownItemStyle" format="reference" />

Как мне разобрать это и понять?

Я смотрю темы Android & демистифицированные стили - Google I/O 2016 говорят несколько раз, и я до сих пор не понимаю, как работает эта справочная вещь.

Ответ 1

Формат reference используется, когда атрибут ссылается на другой идентификатор ресурса. Например:

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

<!-- Usage -->
app:mydrawable="@drawable/shape1"

Итак, такие ресурсы, как @layout/..., @color/..., @style/... относятся к типу reference. Однако форматы атрибутов, такие как color, boolean и т.д., Также требуют цветовых литералов (например, 0x00FF00) и логических литералов (например, true) соответственно.

В вашем случае spinnerDropDownItemStyle - это атрибут, который получает ресурс, подобный @style/..., который сам по себе является указателем на запись ресурса типа style.

Кстати, вы можете установить формат для нескольких типов, используя |. Например, для следующего атрибута допустимы @color/mycolor и 0x00FF00.

<attr name="mycolor" format="reference|color" />