Fragezeichen (?) In XML-Attributen für Android

140

Kann jemand das Fragezeichen in Android XML-Attributen erklären?

<TextView    
    style="?android:attr/windowTitleStyle"
    More attributes
/>
Casebash
quelle

Antworten:

132

Das Fragezeichen bedeutet, dass es sich um einen Verweis auf einen Ressourcenwert im aktuell angewendeten Thema handelt. Weitere Informationen finden Sie im linuxtopia Android Dev Guide oder im android.com Dev Guide .

\? entgeht dem Fragezeichen.

jball
quelle
3
Ich denke, es wäre besser, Ihren zweiten Link zu verweisen auf: developer.android.com/guide/topics/resources/…
Casebash
9
Dev Guide Artikel wurden umstrukturiert, dies ist der neue direkte Link: developer.android.com/guide/topics/resources/…
mernen
3
Ich denke, es ist angemessener zu sagen? wird verwendet, um auf Stilattribute zu verweisen, anstatt auf einen Ressourcenwert im aktuell angewendeten Thema zu verweisen. Laut android.com Dev Guide Link, den Sie bereitgestellt haben.
Helin Wang
5
Ich denke, es ist am sinnvollsten, wenn mehrere Themen mit demselben benutzerdefinierten Ressourcenattribut betrachtet werden. Angenommen, Sie haben filmbezogene Themen wie MyThemeTransformers und MyThemeHobbit und beide haben ein Attribut namens movieIcon. Und movieIcon verweist in jeder Themendefinition auf eine @ drawable-Ressource, z. B. einen Roboter oder ein Hobbit-Bild. Sie können überall dort auf "? Attr / movieIcon" verweisen, wo das Thema aktiv ist (z. B. in einer Symbolleiste oder einem Dialogfeld oder in einem beliebigen Ansichtslayout), und es zeigt automatisch auf das richtige Zeichenelement, wenn Sie zwischen Themen wechseln. Ich hoffe das hilft.
Devon Biere
1
@ DevonBiere es hat geholfen! Es wäre großartig, wenn Sie Ihren Kommentar als Antwort einreichen würden.
Alexander Suraphel
37

Das ? Mit dieser Option können Sie auf ein Stilattribut anstatt auf eine bestimmte fest codierte Ressource verweisen . Weitere Informationen finden Sie unter "Referenzieren von Stilattributen" im Android Dev Guide.

Wie ist das eigentlich sinnvoll? Dies ist am sinnvollsten, wenn mehrere Themen mit demselben benutzerdefinierten Ressourcenattribut berücksichtigt werden .

Angenommen, Sie haben filmbezogene Themen wie MyThemeTransformers und MyThemeHobbit und beide haben ein Attribut namens movieIcon . Und dieses movieIcon-Attribut verweist in jeder Themendefinition auf eine andere @ drawable-Ressource, z. B. robot.png oder hobbit.png.

Sie können überall dort auf " ? Attr / movieIcon " verweisen, wo das Thema aktiv ist (z. B. in einer Symbolleiste oder einem Dialogfeld oder in einem beliebigen Ansichtslayout ), und es zeigt automatisch auf das richtige Zeichenelement, wenn Sie zwischen Themen wechseln. Sie benötigen keine themenabhängige Logik, um die verschiedenen Zeichen zu verwenden. Sie definieren einfach das movieIcon-Attribut für jedes Thema und das Android-Framework kümmert sich um den Rest.

Devon Biere
quelle