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

144

Может ли кто-нибудь объяснить, что означает вопросительный знак в атрибутах Android XML?

<TextView    
    style="?android:attr/windowTitleStyle"
    More attributes
/>
Casebash
источник

Ответы:

134

Знак вопроса означает, что это ссылка на значение ресурса в текущей применяемой теме. См. Руководство разработчика Android для linuxtopia или руководство разработчика android.com для получения дополнительной информации.

\? ускользает от вопросительного знака.

jball
источник
3
Думаю, было бы лучше указать вашу вторую ссылку на: developer.android.com/guide/topics/resources/…
Casebash
9
Статьи Руководства разработчика были реструктурированы, это новая прямая ссылка: developer.android.com/guide/topics/resources/…
mernen
3
Думаю, правильнее сказать? используется для «ссылки на атрибуты стиля», а не для «ссылки на значение ресурса в текущей применяемой теме». Согласно предоставленной вами ссылке руководства разработчика android.com.
Helin Wang
5
Я думаю, что это имеет смысл при рассмотрении нескольких тем, содержащих один и тот же настраиваемый атрибут ресурса. Допустим, у вас есть темы, связанные с фильмами, такие как MyThemeTransformers и MyThemeHobbit, и обе имеют атрибут с именем movieIcon. А movieIcon указывает на ресурс @drawable, например изображение робота или хоббита, в каждом определении темы. Вы можете ссылаться на «? Attr / movieIcon» в любом месте, где действует тема (например, на панели инструментов, диалоговом окне или в любом другом виде макета), и он автоматически укажет на правильный чертеж, когда вы переключаетесь между темами. Надеюсь, это поможет.
Девон Биер
1
@DevonBiere помогло! Было бы здорово, если вы отправите свой комментарий в качестве ответа.
Александр Сурафель 01
38

? позволяет ссылаться на атрибут стиля вместо определенного жестко заданного ресурса . Дополнительные сведения см. В разделе «Ссылки на атрибуты стиля» в Руководстве разработчика Android.

Итак, чем это действительно полезно? Это имеет наибольший смысл при рассмотрении нескольких тем, содержащих один и тот же настраиваемый атрибут ресурса .

Допустим, у вас есть темы, связанные с фильмами, такие как MyThemeTransformers и MyThemeHobbit, и обе имеют атрибут с именем movieIcon . И этот атрибут movieIcon указывает на другой ресурс @drawable, например, robot.png или hobbit.png, в каждом определении темы.

Вы можете ссылаться на « ? Attr / movieIcon » в любом месте, где действует тема (например, на панели инструментов, диалоговом окне или в любом другом виде макета), и он автоматически укажет на правильный чертеж, когда вы переключаетесь между темами. Для использования различных чертежей не требуется никакой логики, зависящей от темы. Вы просто определяете атрибут movieIcon для каждой темы, а платформа Android позаботится обо всем остальном.

Девон Биер
источник