Там очень мало документации о теге 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)?