R.styleable、R.style 和 R.attr 有什么区别?我在所有这三个类中都找到了 TextAppearance。
2 回答
R.style
具有 android 提供的所有样式(包括提供的所有 Theme android)。例如,Theme.Translucent
,Widget.AbsListView
。
R.attr
提供了所有的attrs android(可以设置为视图或窗口)。例如,layout_width
可以设置为视图,windowIsFloating
可以设置为窗口。
R.styleable
具有android提供的特定视图或窗口的所有属性,并且可以在样式中定义。例如,FrameLayout_Layout_layout_gravity
: layout_gravity 可以为 FrameLayout 设置样式,Window_windowIsFloating
: 指示这是否是浮动窗口的标志。
为了回答您的问题,TextAppearance 是一个属性(R.attr)并且它被声明为可样式化的 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(Theme只是一种风格),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>
以防万一你不明白什么是“?” 意思是,检查:Android XML 属性中的问号 (?) 如果您对什么是可声明样式感到困惑,请检查:声明样式和样式之间的区别
R.style 用于主题定义(为要在布局中重用的元素配置默认或特定样式集)。
R.styleable 包含单独的属性。R.attr 用于定义自定义视图的属性。假设您创建了自己的名为 CardView 的自定义视图,它接收 2 个字符串,然后根据这些字符串的大小构建其布局。您可以将这些设置为通过 R.attr 在您的 XML 布局中分配的属性(更多信息/更好的解释在这里)。