R.styleable,R.style和R.attr之间有什么区别? 我在所有这三个类中找到了TextAppearance。
答案 0 :(得分:16)
R.style
已提供所有样式的android(包括所提供的所有主题android)。例如,Theme.Translucent
,Widget.AbsListView
。
R.attr
提供了所有attrs android(可以设置为视图或窗口)。例如,layout_width
可以设置为查看,windowIsFloating
可以设置为窗口。
R.styleable
具有Android提供的特定视图或窗口的所有att并且可以在样式中定义。例如,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也是一个主题/样式(主题只是一种样式),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>
万一你不明白什么是“?”意思是,检查:Question mark (?) in XML attributes for Android 如果您对声明风格的内容感到困惑,请检查:Difference between declare-styleable and style
答案 1 :(得分:0)
R.style用于主题定义(为要在布局中重用的元素配置默认或特定的样式集)。
R.styleable包含单独的attrs。 R.attr用于定义自定义视图的属性。假设你创建了一个名为CardView的自定义视图,它接受2个字符串,然后根据这些字符串的大小构建其布局。您可以将这些设置为通过R.attr(more info / better explanation here)在XML布局中分配的属性。