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

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

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

【问题讨论】:

    标签: android xml android-styles


    【解决方案1】:

    问号表示它是对当前应用主题中资源值的引用。请参阅linuxtopia Android Dev Guideandroid.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 框架处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-03
      • 2017-02-26
      • 2013-08-14
      • 2011-11-27
      • 2016-11-18
      相关资源
      最近更新 更多