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

任何人都可以解释在Android XML属性中的问号意味着什么?

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

问号意味着它是对当前应用主题中资源值的引用。 有关更多信息,请参阅linuxtopia Android Dev Guide或android.com Dev Guide 。

\? 逃避问号。

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

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

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

您可以在主题有效的任何位置(如在工具栏或对话框或任何types的视图布局中)引用“ ?attr / movieIcon ”,当您在主题之间切换时,它将自动指向正确的可绘制对象。 你不需要任何主题相关的逻辑来使用不同的drawable。 您只需为每个主题定义movieIcon属性,然后Android框架负责其余部分。