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

Posted

技术标签:

【中文标题】Android 的 XML 属性中的问号 (?)【英文标题】:Question mark (?) in XML attributes for Android 【发布时间】:2011-02-13 14:28:54 【问题描述】:

谁能解释一下android XML属性中问号的含义?

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

【问题讨论】:

【参考方案1】:

问号表示它是对当前应用主题中资源值的引用。请参阅linuxtopia Android Dev Guide 或android.com Dev Guide 了解更多信息。

\? 转义问号。

【讨论】:

我认为最好将您的第二个链接指向:developer.android.com/guide/topics/resources/… 开发指南文章已经改版,这是新的直接链接:developer.android.com/guide/topics/resources/… 我觉得这样说比较合适?用于“引用样式属性”而不是“引用当前应用主题中的资源值”。根据您提供的 android.com 开发指南链接。 我认为在考虑包含相同自定义资源属性的多个主题时最有意义。假设您有与电影相关的主题,例如 MyThemeTransformers 和 MyThemeHobbit,它们都有一个名为 movieIcon 的属性。在每个主题定义中,movieIcon 都指向一个@drawable 资源,比如机器人或霍比特人图像。您可以在主题生效的任何地方(例如在工具栏或对话框或任何类型的视图布局中)引用“?attr/movieIcon”,当您在主题之间切换时,它会自动指向正确的可绘制对象。我希望这会有所帮助。 @DevonBiere 它有帮助!如果您提交您的评论作为答案,那就太好了。【参考方案2】:

那个?允许您引用样式属性,而不是特定的硬编码资源。有关详细信息,请参阅 Android 开发指南中的 "Referencing style attributes"。

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

假设您有电影相关的主题,例如 MyThemeTransformers 和 MyThemeHobbit,它们都有一个名为 movieIcon 的属性。在每个主题定义中,movieIcon 属性指向不同的@drawable 资源,比如robot.png 或hobbit.png。

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

【讨论】:

以上是关于Android 的 XML 属性中的问号 (?)的主要内容,如果未能解决你的问题,请参考以下文章

PHP网页中获取 href 属性中跟在问号后面的部分.

Android中View自定义XML属性详解以及R.attr与R.styleable的区别

Android 自定义视图 XML 中的复杂属性

Android Studio 中的 XML 属性排列

Android——TextView属性XML详解

Android一些不太常用XML文件属性的总结