Android-Stile: Unterschied zwischen " style="@android:style/XYZ"' und 'style="?android:attr/XYZ"'?
Ich versuche, die Stil-Tasten, um zu schauen, wie ich Sie Fragen, in Android-Volle Breite ICS-Stil Minimalistischen Unten ButtonsViews.
Habe ich erfolgreich, mit den folgenden xml-Code für alle interessierten:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="bottom"
android:divider="@android:drawable/divider_horizontal_dark"
android:gravity="bottom"
android:orientation="vertical"
android:paddingTop="16dip"
android:showDividers="beginning|end" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:measureWithLargestChild="true"
android:orientation="horizontal"
android:divider="@android:drawable/divider_horizontal_dark"
android:showDividers="middle" >
<Button
android:id="@+id/cancel_button"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:layout_weight="1"
android:maxLines="2"
android:text="@string/cancel_button" />
<Button
android:id="@+id/login_button"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_weight="1"
android:filterTouchesWhenObscured="true"
android:maxLines="2"
android:text="@string/login_button" />
</LinearLayout>
</LinearLayout>
Eine Frage und zwar. Die eclipse-content-assist hat keine Ahnung, was geschieht mit der folgenden Ressource-Auflösung:
style="?android:attr/buttonBarButtonStyle"
Ich bin vertraut mit der typischen Auflösung (die eclipse-content-assist bekannt ist)
style=@android/style/...
...aber ich bin mir nicht klar über den Unterschied zwischen den beiden. Es scheint so, dass einige style-Attribute in eine aber das andere nicht. Zum Beispiel, die folgenden nicht auflösen, zu nichts:
style=@android:attr/buttonBarStyle
und auch nicht dieses:
style="@android:style/buttonBarStyle
Also ich denke, zwei Fragen sind hier:
- Warum der Unterschied in der Ressourcen-Referenzierung syntax?
- Warum die verwirrende miscategorization von Stilen in einem attr-Kategorie.
- Was ist der attr Kategorie sogar wieder?
Dank!
InformationsquelleAutor Teddy | 2012-06-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vom eine andere Antwort auf SO (paraphrasiert hier):
Mithilfe eines Fragezeichens vor einer ID bedeutet, dass Sie zugreifen möchten, einen Stil Attribut, dass definiert wird, in einem Stil, Thema, statt hardcoding das Attribut.
Betrachten Sie es als die Dereferenzierung ein theme-Attribut zum abrufen der Ressource, die Sie Punkte lieber als auf das Attribut selbst.
Die Referenzierung Von Style-Attributen
InformationsquelleAutor Barak
?android:attr/buttonBarButtonStyle oder nur ?android:buttonBarButtonStyle - (attr optional)
Diese intern dereferenziert an @android:style/Widget.Schaltfläche definiert ist, innerhalb appcompat/res/Werte/themes.xml Datei.
(?android:) - immer links, um den Wert des Attributs für die aktuelle theme angewendet. So dass wir finden Sie den android-definiert Stil, sondern nur einen neuen zu erstellen und die Lieferung einer fest codierten Wert.
InformationsquelleAutor Gagandeep