Existe muy poca documentación sobre la declare-styleableetiqueta mediante la cual podemos declarar estilos personalizados para componentes. Encontré esta lista de valores válidos para el formatatributo de la attretiqueta. Si bien eso es bueno en la medida de lo posible, no explica cómo usar algunos de esos valores. Navegando attr.xml (la fuente de Android para los atributos estándar), descubrí que puedes hacer cosas como:
<!-- The most prominent text color. -->
<attr name="textColorPrimary" format="reference|color" />
El formatatributo evidentemente se puede ajustar a una combinación de valores. Presumiblemente, el formatatributo ayuda al analizador a interpretar un valor de estilo real. Luego descubrí esto en 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>
Ambos parecen declarar un conjunto de valores permitidos para el estilo indicado.
Entonces tengo dos preguntas:
- ¿Cuál es la diferencia entre un atributo de estilo que puede tomar uno de un conjunto de
enumvalores y uno que puede tomar un conjunto deflagvalores? - ¿Alguien sabe de alguna documentación mejor sobre cómo
declare-styleablefunciona (aparte de la ingeniería inversa del código fuente de Android)?