Es gibt nur wenige wertvolle Dokumentationen zu dem declare-styleable
Tag, mit denen wir benutzerdefinierte Stile für Komponenten deklarieren können. Ich habe diese Liste gültiger Werte für das format
Attribut des attr
Tags gefunden. Das ist zwar nett, erklärt aber nicht, wie man einige dieser Werte verwendet. Beim Durchsuchen von attr.xml (der Android-Quelle für die Standardattribute) habe ich festgestellt, dass Sie Folgendes tun können:
<!-- The most prominent text color. -->
<attr name="textColorPrimary" format="reference|color" />
Das format
Attribut kann offensichtlich auf eine Kombination von Werten gesetzt werden. Vermutlich format
hilft das Attribut dem Parser, einen tatsächlichen Stilwert zu interpretieren. Dann habe ich dies in attr.xml entdeckt:
<!-- 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>
Beide scheinen eine Reihe zulässiger Werte für den angegebenen Stil zu deklarieren.
Ich habe also zwei Fragen:
- Was ist der Unterschied zwischen einem Stilattribut, das einen Wertesatz annehmen kann, und einem, der einen Wertesatz
enum
annehmen kannflag
? - Kennt jemand eine bessere Dokumentation für die Funktionsweise
declare-styleable
(außer Reverse Engineering des Android-Quellcodes)?