web-dev-qa-db-fra.com

Point d'interrogation (?) Dans les attributs XML pour Android

Quelqu'un peut-il expliquer le point d'interrogation signifie dans Android attributs XML?

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

Le point d'interrogation signifie qu'il s'agit d'une référence à une valeur de ressource dans le thème actuellement appliqué. Voir linuxtopia Android ou Guide de développement Android.com pour en savoir plus).

\? échappe au point d'interrogation.

123
jball

Le ? vous permet de faire référence à un style attribut au lieu d'une ressource codée en dur. Voir "Référencement des attributs de style" dans le Android Dev Guide pour plus de détails.

Alors, comment est-ce réellement utile? Cela a plus de sens lorsque l'on considère plusieurs thèmes contenant le même attribut de ressource personnalisé .

Supposons que vous ayez des thèmes liés aux films comme MyThemeTransformers et MyThemeHobbit, et que les deux aient un attribut appelé movieIcon . Et cet attribut movieIcon pointe vers une ressource @drawable différente, par exemple robot.png ou hobbit.png, dans chaque définition de thème.

Vous pouvez vous référer à "? Attr/movieIcon " partout où le thème est en vigueur (comme dans une barre d'outils ou une boîte de dialogue ou tout autre type de disposition d'affichage), et il pointera automatiquement vers le dessin approprié lorsque vous basculerez entre les thèmes. Vous n'avez pas besoin de logique dépendante du thème pour utiliser les différents drawables. Vous définissez simplement l'attribut movieIcon pour chaque thème et le cadre Android s'occupe du reste).

34
Devon Biere