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

Zah*_*san 15 android

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

Hel*_*ang 16

R.style已提供所有样式的android(包括所有主题android提供).例如Theme.Translucent,Widget.AbsListView.

R.attr有所有attrs android提供(可以设置为视图或窗口).例如,layout_width可以设置为查看,windowIsFloating可以设置为窗口.

R.styleable拥有Android提供的特定视图或窗口的所有attrs,并且可以在样式中定义.例如,FrameLayout_Layout_layout_gravity:layout_gravity可以为FrameLayout设置样式,Window_windowIsFloating:Flag指示这是否是浮动窗口.

要回答你的问题,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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

万一你不懂什么"?" 表示,检查:Android的XML属性中的问号(?) 如果你对什么是declare-styleable感到困惑,请检查:declare-styleable和style之间的区别