我知道你可以用
引用一个图标<item android:id="@+id/config"
android:icon="@drawable/ic_config"
android:title="@string/config"
app:showAsAction="ifRoom"/>
因此,这将进入drawable文件夹并查找ic_config图像 但我最近看到了这个:
android:id="@+id/config"
android:icon="?iconConfig"
android:title="@string/config"
app:showAsAction="ifRoom"/>
现在我不明白我的config-image和?iconConfig
之间的映射是如何工作的,我可以看到' iconConfig '出现在R.java和attr.xml中文件,但没有其他地方
谁能解释一下?
答案 0 :(得分:0)
'?'当您需要在具有多个主题时引用drawable时使用。它是为了在主题之间切换时简化逻辑,让Android自动决定使用哪种资源。
答案 1 :(得分:0)
请浏览以下链接:
http://www.linuxtopia.org/online_books/android/devguide/guide/topics/ui/themes.html
修改强>
为了您的方便,我将从上面提供的链接发布所需的部分:
就像样式一样,主题也在XML元素中声明, 并以相同的方式引用。不同的是你添加 整个应用程序或活动的主题,通过 和Android Manifest中的元素 - 主题不能 适用于个人观点。
以下是主题的示例声明:
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="CustomTheme">
<item name="android:windowNoTitle">true</item>
<item name="windowFrame">@drawable/screen_frame</item>
<item name="windowBackground">@drawable/screen_background_white</item>
<item name="panelForegroundColor">#FF000000</item>
<item name="panelBackgroundColor">#FFFFFFFF</item>
<item name="panelTextColor">?panelForegroundColor</item>
<item name="panelTextSize">14</item>
<item name="menuItemTextColor">?panelTextColor</item>
<item name="menuItemTextSize">?panelTextSize</item> </style> </resources>
注意使用at符号(@)和问号(?) 参考资源。符号表示我们引用了一个 先前在别处定义的资源(可能来自此项目 或者来自Android框架)。问号表明我们是 引用当前加载的主题中的资源值。这是 通过引用特定的名称值来完成。 (例如。, panelTextColor使用分配给panelForegroundColor的相同颜色, 事先定义。)此技术只能在XML资源中使用。