42 votes

Quelle est la différence entre "? Android:" et "@android:" dans un fichier xml de mise en page android?

Quelle est la différence entre "?android:" et "@android:" dans un androïde mise en page fichier xml? Ils semblent être interchangeables façons de réutiliser l'android SDK ressources.

La seule différence que j'ai découvert est illustré par l'exemple suivant.

Ici le TextView du bord droit est alignée avec le bord gauche de la ImageButton

 <RelativeLayout
    android:id="@id/header"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#888888">
    <TextView
        android:id="@android:id/text1"
        android:layout_alignParentLeft="true"
        android:text="blah blah"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@android:id/button1" />
    <ImageButton
        android:id="@android:id/button1"
        android:layout_alignParentRight="true"
        style="@style/PlusButton" />
</RelativeLayout>

Ici, cependant, le bord droit de la TextView est aligné avec le bord droit de la RelativeLayout. Le TextView chevauche le ImageButton.

<RelativeLayout
    android:id="@id/header"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#888888">
    <TextView
        android:id="@android:id/text1"
        android:layout_alignParentLeft="true"
        android:text="blah blah"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="?android:id/button1" />
    <ImageButton
        android:id="?android:id/button1"
        android:layout_alignParentRight="true"
        style="@style/PlusButton" />
</RelativeLayout>

La seule différence entre les deux dispositions est l'utilisation de @android vs ?android. Compiler sans erreurs.

Merci beaucoup.

36voto

Jason LeBrun Points 6130

Le fait de préfixer l'ID avec un point d'interrogation indique que vous souhaitez accéder à un attribut de style défini dans un thème de style, plutôt que de coder en dur l'attribut.

Voir "Référencement des attributs de style" ici: accès aux ressources

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X