Для чего нужен формат "reference|color"?

У атрибутов есть формат reference. Он может хранить любые ссылки по типу @layout/..., @color/... и так далее. Также есть формат color. Сначала я думал, что он может хранить только значения по типу #F44336. Но как оказалось атрибуты с данным форматом спокойно могут ссылаться на любые ссылки также как и атрибуты с форматом reference.

Иногда я вижу атрибуты, чей формат определен следующим образом:

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

Вопрос: в чем смысл формата color|reference если по сути он делает тоже самое что и color (может ссылаться на ссылки + хранить такие значение как #F44336) ?


Ответы (1 шт):

Автор решения: IR42

В данном случае reference для возможности подставлять Color state list resource, а иногда Drawable resources (например android:background), зависит на самом деле, как это обрабатывается в коде. Если вы подставите что-то неподходящее, то будет краш

→ Ссылка