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

Cas*_*ash 134 xml android android-styles

谁能解释Android XML属性中的问号意味着什么?

<TextView    
    style="?android:attr/windowTitleStyle"
    More attributes
/>
Run Code Online (Sandbox Code Playgroud)

jba*_*all 126

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

\? 逃避问号.

  • Dev Guide文章已经过重组,这是新的直接链接:http://developer.android.com/guide/topics/resources/accessing-resources.html#ReferencesToThemeAttributes (9认同)
  • 我认为在考虑包含相同自定义资源属性的多个主题时最有意义.假设您有与MyThemeTransformers和MyThemeHobbit等电影相关的主题,并且都有一个名为movieIcon的属性.并且movieIcon指向每个主题定义中的@drawable资源,比如机器人或霍比特人图像.您可以在主题生效的任何地方(例如在工具栏或对话框或任何类型的View布局中)引用"?attr/movieIcon",并且当您在主题之间切换时,它将自动指向正确的drawable.我希望有所帮助. (5认同)
  • 我认为最好将您的第二个链接指向:http://developer.android.com/guide/topics/resources/resources-i18n.html#ReferencesToThemeAttributes (3认同)
  • 我认为这更合适吗?用于"引用样式属性"而不是"引用当前应用的主题中的资源值".根据您提供的android.com开发指南链接. (3认同)

Dev*_*ere 36

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

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

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

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