Istnieje niewielka dokumentacja dotycząca declare-styleable
tagu, za pomocą której możemy zadeklarować niestandardowe style komponentów. Znalazłem listę prawidłowych wartości format
atrybutu attr
tagu. Chociaż jest to miłe, jeśli chodzi o to, nie wyjaśnia, jak używać niektórych z tych wartości. Przeglądając attr.xml (źródło Androida dla standardowych atrybutów), odkryłem, że możesz robić takie rzeczy, jak:
<!-- The most prominent text color. -->
<attr name="textColorPrimary" format="reference|color" />
format
Atrybut można oczywiście ustawić do kombinacji wartości. Przypuszczalnie format
atrybut pomaga parserowi zinterpretować rzeczywistą wartość stylu. Potem odkryłem to w 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>
Oba wydają się deklarować zestaw dozwolonych wartości dla wskazanego stylu.
Mam więc dwa pytania:
- Jaka jest różnica między atrybutem stylu, który może przyjąć jeden z zestawu
enum
wartości, a takim, który może przyjąć zestawflag
wartości? - Czy ktoś zna lepszą dokumentację dotyczącą tego, jak
declare-styleable
działa (poza inżynierią wsteczną kodu źródłowego Androida)?