在Android应用程序中引用图标的方法

时间:2017-01-03 12:30:35

标签: java android icons

我知道你可以用

引用一个图标
<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中文件,但没有其他地方 谁能解释一下?

2 个答案:

答案 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资源中使用。