Подтвердить что ты не робот

Каковы различия между R.styleable, R.style и R.attr?

В чем отличия между R.styleable, R.style и R.attr? Я нашел TextAppearance во всех этих трех классах.

4b9b3361

Ответ 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(больше информации/лучшее объяснение здесь).