2013-01-02 15 views
13

Was sind die Unterschiede zwischen R.styleable, R.style und R.attr? Ich habe TextAppearance in all diesen drei Klassen gefunden.Was sind die Unterschiede zwischen R.styleable, R.style und R.attr?

+0

Wo haben Sie diese gefunden? –

+1

Schaust du dir die Klasse android.R an? Das ist sicherlich eine gute Frage. Ich bin von den Android-API-Dokumenten enttäuscht. Dies ist nur ein anderes von mehreren Beispielen, wo ich sehe, dass den Dokumenten wichtige Details fehlen, die für Entwickler hilfreich wären. –

Antwort

14

R.style hat alle Stile Android (einschließlich aller Theme Android zur Verfügung gestellt). Z. B. Theme.Translucent, Widget.AbsListView.

R.attr hat alle attrs android zur Verfügung gestellt (das könnte eingestellt werden, um anzuzeigen oder Fenster). Zum Beispiel kann layout_width eingestellt werden, um anzuzeigen, windowIsFloating kann auf Fenster eingestellt werden.

R.styleable hat alle Vorteile einer bestimmten Ansicht oder eines Fensters, die Android zur Verfügung gestellt UND kann in einem Stil definiert werden. Beispiel: FrameLayout_Layout_layout_gravity: layout_gravity kann für FrameLayout entworfen werden, Window_windowIsFloating: Flag, das angibt, ob es sich um ein schwebendes Fenster handelt.

Um Ihre Frage zu beantworten, ist TextAppearance ein Attribut (R.attr) und es ist styleable erklärt, attrs.xml:

<attr name="textAppearance" format="reference" /> 
<declare-styleable name="TextViewAppearance"> 
    <!-- Base text color, typeface, size, and style. --> 
    <attr name="textAppearance" /> 
</declare-styleable> 

TextAppearance ist auch ein Thema/Style (Theme ist nur ein Stil), 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> 

Nur für den Fall, dass Sie nicht verstehen, was das "?" bedeutet, überprüfen: Question mark (?) in XML attributes for Android Und für den Fall, dass Sie durch was deklarieren styleable verwirrt sind, überprüfen Sie: Difference between declare-styleable and style

+0

Können Sie dann sagen, welche Attribute wir verwenden können, wenn Sie einen TextAppearance-Stil erstellen/erben? '' sagt, es ist eine Referenz, aber auf welcher styleable? – user40797

0

R.style wird für Designdefinitionen verwendet (konfigurieren Sie standardmäßige oder spezifische Stylesätze für Elemente, die in Ihren Layouts wiederverwendet werden sollen).

R.styleable enthält einzelne Attr. R.attr wird verwendet, um Attribute für benutzerdefinierte Ansichten zu definieren. Angenommen, Sie erstellen Ihre eigene benutzerdefinierte Ansicht mit der Bezeichnung CardView. Sie nimmt 2 Strings auf und erstellt dann ihr Layout basierend auf der Größe dieser Strings. Sie können diese als Attribute festlegen, die in Ihren XML-Layouts über R.attr (more info/better explanation here) zugewiesen werden.

+1

Es ist falsch. R.attr wird verwendet, um einzelne attrs zu definieren, während R.stylable verwendet wird, um Attribute für benutzerdefinierte Ansichten zu definieren. – szcoder

+0

Aus der verknüpften Dokumentation: 'Um benutzerdefinierte Attribute zu definieren, fügen Sie Ihrem Projekt -Ressourcen hinzu. Es ist üblich, diese Ressourcen in eine Datei res/values ​​/ attrs.xml zu legen. – PrplRugby

Verwandte Themen