Ich schaue mir den Beispielcode der Honeycomb Gallery ( hier ) an und bin beim Versuch, Aktionselemente in meiner eigenen App hinzuzufügen, auf den folgenden Code gestoßen:
<item android:id="@+id/camera"
android:title="Camera"
android:icon="?attr/menuIconCamera"
android:showAsAction="ifRoom" />
Das ?attr
wirft mich für eine Schleife. Kann jemand bitte erklären, was das tut? Wie hängt das mit einem Drawable zusammen? Ich kann anscheinend keine guten Informationen bei Google finden. Gibt es auch eine Liste oder Galerie von Attributen, die wir für Symbole verwenden können, anstatt nur menuIconCamera
?
Vielen Dank
Bearbeiten: Ich habe mich noch ein bisschen umgesehen und festgestellt, dass attrs.xml so aussieht:
<resources>
<declare-styleable name="AppTheme">
<attr name="listDragShadowBackground" format="reference" />
<attr name="menuIconCamera" format="reference" />
<attr name="menuIconToggle" format="reference" />
<attr name="menuIconShare" format="reference" />
</declare-styleable>
Leider macht es das für mich nur noch verwirrender. Was macht das?
quelle
Die
?attr:
Syntax wird für den Zugriff auf Attribute des aktuellen Themas verwendet. Siehe Referenzieren von Stilattributen .quelle
Ich weiß, dass dieser Beitrag sehr alt ist, aber ich denke, die folgende Erklärung wird Anfängern helfen, ihn leicht zu verstehen.
Also in Laienbegriffen,
someAttribute="?attr/attributeName"
meint -Ein häufiges Beispiel ist das Stylen einer Symbolleiste
Hier Wert
android:background
wird festgelegt werden ,@color/primary_color
da?attr/colorPrimary
bezieht sich auf@color/primary_color
im aktuellen Thema (AppTheme)quelle
Mein Englisch ist nicht gut, sorry. Aber ich kenne diese Frage
android:icon="?attr/menuIconCamera"
will verwendenattrs.xml
styles.xml
verwenden
@drawable/ic_menu_camera_holo_light
quelle
Dies dient zum Verweisen auf Stilattribute. siehe R.attr
Referenzieren von Stilattributen
quelle
android.support.v7.appcompat:
.Dieser Blog-Beitrag leistet hervorragende Arbeit bei der Referenzierung von Werten für Stilattribute, die im aktuellen Thema definiert sind: https://trickyandroid.com/android-resources-and-style-attributes-cheatsheet/
Wenn Sie die
?
Notation sehen, bedeutet dies, dass wir versuchen, auf ein Stilattribut zu verweisen. Dieser Wert kann je nach aktuellem Thema variieren. In jedem bestimmten Thema können wir dieses Attribut überschreiben, sodass das XML-Layout nicht geändert werden muss und das richtige Thema angewendet werden muss.Wenn Sie die
@
Notation sehen, verweisen wir auf den tatsächlichen Ressourcenwert (Farbe, Zeichenfolge, Dimension usw.). Diese Ressource sollte einen tatsächlichen Wert haben. In diesem Fall wissen wir genau, mit welchem Wert wir es zu tun haben.Hier ist ein Beispiel:
quelle