R.styleable,R.style和R.attr之间有什么区别?

时间:2013-01-02 21:14:49

标签: android

R.styleable,R.style和R.attr之间有什么区别? 我在所有这三个类中找到了TextAppearance。

2 个答案:

答案 0 :(得分:16)

R.style已提供所有样式的android(包括所提供的所有主题android)。例如,Theme.TranslucentWidget.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布局中分配的属性。