Punto interrogativo (?) Negli attributi XML per Android


140

Qualcuno può spiegare il significato del punto interrogativo negli attributi XML di Android?

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

Risposte:


132

Il punto interrogativo indica che è un riferimento a un valore di risorsa nel tema attualmente applicato. Vedi la Guida per sviluppatori Android linuxtopia o la Guida per sviluppatori android.com per maggiori informazioni.

\? sfugge al punto interrogativo.


3
Penso che sarebbe meglio puntare il tuo secondo link a: developer.android.com/guide/topics/resources/…
Casebash

9
Gli articoli della Dev Guide sono stati ristrutturati, questo è il nuovo link diretto: developer.android.com/guide/topics/resources/…
mernen,

3
Penso che sia più appropriato dirlo? viene utilizzato per "Riferimenti agli attributi di stile" anziché "riferimento a un valore di risorsa nel tema attualmente applicato". Secondo il link della guida dev di android.com fornito.
Helin Wang,

5
Penso che abbia più senso se si considerano più temi contenenti lo stesso attributo di risorsa personalizzata. Supponi di avere temi correlati al film come MyThemeTransformers e MyThemeHobbit ed entrambi hanno un attributo chiamato movieIcon. E movieIcon punta a una risorsa @drawable, per esempio un robot o un'immagine hobbit, in ogni definizione del tema. Puoi fare riferimento a "? Attr / movieIcon" ovunque sia attivo il tema (come in una barra degli strumenti o in una finestra di dialogo o qualunque tipo di layout di visualizzazione) e punterà automaticamente al disegno corretto quando passi da un tema all'altro. Spero che aiuti.
Devon Biere,

1
@DevonBiere mi ha aiutato! Sarebbe bello se invii il tuo commento come risposta.
Alexander Suraphel,

37

Il ? ti consente di fare riferimento a un attributo di stile anziché a una specifica risorsa codificata . Consulta "Attributi dello stile di riferimento" nella Guida per sviluppatori Android per i dettagli.

Quindi, come è effettivamente utile? Ha più senso se si considerano più temi contenenti lo stesso attributo di risorsa personalizzata .

Supponi di avere temi correlati al film come MyThemeTransformers e MyThemeHobbit ed entrambi hanno un attributo chiamato movieIcon . E quell'attributo movieIcon punta a una diversa risorsa @drawable, diciamo robot.png o hobbit.png, in ogni definizione di tema.

Puoi fare riferimento a " ? Attr / movieIcon " ovunque sia attivo il tema (come in una barra degli strumenti o in una finestra di dialogo o qualunque tipo di layout di visualizzazione) e punterà automaticamente al disegno corretto quando passi da un tema all'altro. Non è necessaria alcuna logica dipendente dal tema per utilizzare i diversi disegni. È sufficiente definire l'attributo movieIcon per ciascun tema e il framework Android si occupa di tutto il resto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.