Android的XML属性中的问号(?)


140

谁能在Android XML属性中解释问号的意思吗?

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

Answers:


132

问号表示它是当前应用主题中对资源值的引用。有关更多信息,请参见linuxtopia Android开发指南android.com开发指南

\? 跳过问号。


3
我认为这将是更好的你的第二个链接指向:developer.android.com/guide/topics/resources/...
Casebash

9
开发指南的文章进行了重组,这是新的直接链接:developer.android.com/guide/topics/resources/...
mernen

3
我认为这更合适吗?用于“引用样式属性”,而不是“引用当前应用的主题中的资源值”。根据您提供的android.com开发指南链接。
Helin Wang 2014年

5
我认为在考虑包含相同自定义资源属性的多个主题时,这是最有意义的。假设您有与电影相关的主题,例如MyThemeTransformers和MyThemeHobbit,它们都有一个名为movieIcon的属性。movieIcon指向每个主题定义中的@drawable资源,例如机器人或霍比特人图像。您可以在主题生效的任何地方(例如在工具栏或对话框或任何类型的View布局中)引用“?attr / movieIcon”,当在主题之间切换时,它将自动指向正确的可绘制对象。希望对您有所帮助。
德文·比尔

1
@DevonBiere帮助了!如果您将评论作为答案提交,那就太好了。
Alexander Suraphel '16

37

?使您可以引用样式属性而不是特定的硬编码资源。有关详细信息,请参见 Android开发人员指南中的“引用样式属性”

那么,这实际上有什么用呢?当考虑包含相同自定义资源属性的多个主题时,这是最有意义的。

假设您有与电影相关的主题,例如MyThemeTransformers和MyThemeHobbit,并且都有一个名为movieIcon的属性。该movieIcon属性指向每个主题定义中的另一个@drawable资源,例如robot.png或hobbit.png。

您可以在主题生效的任何地方(例如在工具栏或对话框或任何类型的View布局中)引用“ ?attr / movieIcon ”,并且当您在主题之间切换时,它将自动指向正确的可绘制对象。您不需要任何主题相关的逻辑即可使用不同的可绘制对象。您只需为每个主题定义movieIcon属性,其余部分就由Android框架负责。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.