Очень мало документации по тегу declare-styleable
, с помощью которого мы можем объявлять собственные стили для компонентов. Я нашел этот список допустимых значений для атрибута format
тега attr
. Хотя это хорошо, но не объясняет, как использовать некоторые из этих значений. Просмотр attr.xml (источник стандартных атрибутов Android), я обнаружил, что вы можете делать такие вещи, как:
<!-- The most prominent text color. -->
<attr name="textColorPrimary" format="reference|color" />
Очевидно, что атрибут format
может быть установлен на комбинацию значений. Предположительно атрибут format
помогает синтаксическому анализатору интерпретировать фактическое значение стиля. Затем я обнаружил это в attr.xml:
<!-- Default text typeface. -->
<attr name="typeface">
<enum name="normal" value="0" />
<enum name="sans" value="1" />
<enum name="serif" value="2" />
<enum name="monospace" value="3" />
</attr>
<!-- Default text typeface style. -->
<attr name="textStyle">
<flag name="normal" value="0" />
<flag name="bold" value="1" />
<flag name="italic" value="2" />
</attr>
Оба они, кажется, объявляют набор допустимых значений для указанного стиля.
Итак, у меня есть два вопроса:
- В чем разница между атрибутом стиля, который может принимать одно из набора значений
enum
, и атрибутом, который может принимать набор значенийflag
? - Кто-нибудь знает лучшую документацию о том, как работает
declare-styleable
(кроме реинжиниринга исходного кода Android)?