Znak zapytania (?) w atrybutach XML dla Androida

Czy ktoś może wyjaśnić znaczenie znaku zapytania w atrybutach XML Androida?

<TextView    
    style="?android:attr/windowTitleStyle"
    More attributes
/>
Author: Vadim Kotov, 2010-04-29

2 answers

Znak zapytania oznacza odniesienie do wartości zasobu w aktualnie stosowanym temacie. Zobacz linuxtopia Android Dev Guide lub android.com Dev Guide więcej na ten temat.

\? ucieka znak zapytania.

 115
Author: jball,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-31 10:16:26

The ? pozwala odwoływać się do atrybutu style zamiast określonego zasobu zakodowanego na twardo. Zobacz "odwoływanie się do atrybutów stylu" w podręczniku deweloperów Androida, aby uzyskać szczegółowe informacje.

Więc, jak to jest naprawdę przydatne? Ma to największy sens przy rozważaniu wielu tematówzawierających ten sam atrybut niestandardowego zasobu.

Powiedzmy, że masz tematy związane z filmem, takie jak MyThemeTransformers i MyThemeHobbit, i oba mają atrybut o nazwie movieIcon . A ten atrybut movieIcon wskazuje na inny zasób @ drawable, powiedzmy robot.png lub hobbit.png, w każdej definicji tematu.

Możesz odnieść się do "?attr / movieIcon " wszędzie tam, gdzie motyw jest aktywny (jak na pasku narzędzi lub w oknie dialogowym lub jakimkolwiek układzie widoku), i automatycznie wskaże poprawny drawable, gdy przełączasz się między motywami. Nie potrzebujesz żadnej logiki zależnej od motywu, aby korzystać z różnych rysunków. Zdefiniuj film atrybut dla każdego motywu, a Android framework zajmuje się resztą.

 26
Author: Devon Biere,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-02 21:54:20