Existe muy poca documentación sobre la declare-styleable
etiqueta mediante la cual podemos declarar estilos personalizados para componentes. Encontré esta lista de valores válidos para el format
atributo de la attr
etiqueta. 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 format
atributo evidentemente se puede ajustar a una combinación de valores. Presumiblemente, el format
atributo 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
enum
valores y uno que puede tomar un conjunto deflag
valores? - ¿Alguien sabe de alguna documentación mejor sobre cómo
declare-styleable
funciona (aparte de la ingeniería inversa del código fuente de Android)?