В чем отличия между R.styleable, R.style и R.attr? Я нашел TextAppearance во всех этих трех классах.
Каковы различия между R.styleable, R.style и R.attr?
Ответ 1
R.style
содержит все стили и андроид (включая все предоставленные темы android). Например, Theme.Translucent
, Widget.AbsListView
.
R.attr
содержит все attrs android (которые могут быть установлены для просмотра или окна). Например, layout_width
можно установить для просмотра, windowIsFloating
можно установить в окно.
R.styleable
имеет все атрибуты определенного вида или окна, которые предоставил андроид И может быть определен в стиле. Например, FrameLayout_Layout_layout_gravity
: layout_gravity может быть в стиле FrameLayout, Window_windowIsFloating
: флаг, указывающий, является ли это плавающим окном.
Чтобы ответить на ваш вопрос, TextAppearance - это атрибут (R.attr) И он объявлен styleable, attrs.xml:
<attr name="textAppearance" format="reference" />
<declare-styleable name="TextViewAppearance">
<!-- Base text color, typeface, size, and style. -->
<attr name="textAppearance" />
</declare-styleable>
TextAppearance также является Theme/Style (тема - это просто стиль), styles.xml:
<style name="TextAppearance">
<item name="android:textColor">?textColorPrimary</item>
<item name="android:textColorHighlight">?textColorHighlight</item>
<item name="android:textColorHint">?textColorHint</item>
<item name="android:textColorLink">?textColorLink</item>
<item name="android:textSize">16sp</item>
<item name="android:textStyle">normal</item>
</style>
На всякий случай вы не понимаете, что такое "?" означает: Вопросительный знак (?) в атрибутах XML для Android И в случае, если вас озадачило то, что объявлено в стиле, проверьте: Разница между объявлением и стилем
Ответ 2
R.style используется для определения тем (настраивать значения по умолчанию или конкретные наборы стилей для повторного использования элементов в ваших макетах).
R.styleable содержит индивидуальные attrs. R.attr используется для определения атрибутов для пользовательских представлений. Предположим, вы создали свой собственный пользовательский вид, называемый CardView, и он занимает 2 строки, а затем строит свой макет на основе размера этих строк. Вы можете установить их как атрибуты, назначенные в ваших XML-макетах, через R.attr(больше информации/лучшее объяснение здесь).