Знак питання (?) В атрибутах XML для Android


140

Чи може хтось пояснити знаки питання в атрибутах Android XML?

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

Відповіді:


132

Знак питання означає, що це посилання на значення ресурсу в поточно застосованій темі. Докладніше про це див. У посібнику з Linux Linux для Android Dev або в посібнику Dev для android.com .

\? уникає знака питання.


3
Я думаю, було б краще вказати на ваше друге посилання на: developer.android.com/guide/topics/resources/…
Casebash,

9
Статті посібника Dev були реструктуровані, це нове пряме посилання: developer.android.com/guide/topics/resources/…
mernen

3
Я думаю, що це більш доречно сказати? використовується для "Атрибутів стилю посилань", а не для "посилання на значення ресурсу в застосованій темі". Відповідно до вказаного вами посібника для розробників android.com.
Хелін Ван

5
Я думаю, що це має найбільше сенс при розгляді кількох тем, що містять один і той же спеціальний атрибут ресурсу. Скажімо, у вас є теми, пов’язані з фільмами, такі як MyThemeTransformers та MyThemeHobbit, і обидва мають атрибут під назвою movieIcon. І filmIcon вказує на ресурс @drawable, скажімо, робот або зображення хобіта, у кожному визначенні теми. Ви можете посилатися на "? Attr / movieIcon" де завгодно, наскільки ця тема діє (наприклад, на панелі інструментів чи діалоговому вікні чи будь-якого виду макета перегляду), і вона автоматично вказуватиме на правильну схему малювання при переключенні між темами. Я сподіваюся, що це допомагає.
Девон Біре

1
@DevonBiere це допомогло! Було б чудово, якби ви подали свій коментар як відповідь.
Олександр Сурафель

37

? дозволяє посилатися на атрибут стилю замість певного жорстко кодованого ресурсу . Докладні відомості див. У розділі "Атрибути стилю посилань" у посібнику Android Dev.

Отже, як це насправді корисно? Це має найбільш сенс при розгляді декількох тем, що містять один і той же спеціальний атрибут ресурсу .

Скажімо, у вас є теми, пов’язані з фільмами, такі як MyThemeTransformers та MyThemeHobbit, і обидва мають атрибут під назвою movieIcon . І цей атрибут movieIcon вказує на інший @drawable ресурс, скажімо, robot.png або hobbit.png, у кожному визначенні теми.

Ви можете посилатися на " ? Attr / movieIcon " де завгодно, наскільки ця тема діє (наприклад, на панелі інструментів чи діалоговому вікні чи будь-якого виду макета перегляду), і вона автоматично вказуватиме на правильну схему малювання при переключенні між темами. Вам не потрібна логіка, що залежить від теми, щоб використовувати різні малюнки. Ви просто визначаєте атрибут movieIcon для кожної теми, а Android-система піклується про інше.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.