使用不同的图标和不同的Android SDK版本

使用不同的图标和不同的Android SDK版本

问题描述:

我有我的Android菜单的图标。在Android 3+上,我使用黑色的ActionBar,因此图标是白色的。但是,在Android 2.x上,菜单本质上是白色的,这意味着图标几乎不可见。我如何为不同的版本使用不同的菜单图标?我假设我可以使用res/drawable-mdpi-v11等不同的可绘制目录来做到这一点,但我想知道是否有另一种方式,因此我不必创建一堆不同的目录,因为我添加了版本或像素密度。使用不同的图标和不同的Android SDK版本

编辑:我把res/drawable-mdpi和res/drawable-hdpi中的黑暗版本与Android 2.x一起使用,并且将res/drawable-mdpi-v11和res/drawable-hdpi-v11与Android 3.x和更高版本一起使用,但是我的Android 2.1(sdk 7)仿真器仍然显示轻型版本。

任何想法为什么?

您可以根据平台版本选择主题,如Styles and Themes开发指南中所述。定义一个风格在你的RES /价值/ styles.xml这样的:

<style name="ThemeSelector" parent="android:Theme.Light"> 
    ... 
</style> 

然后在RES /值-V11 /文件夹,选择你的主题(也许全息,如果你是暗)

<style name="ThemeSelector" parent="android:Theme.Holo"> 
    ... 
</style> 

然后为该样式添加图标。例如,以下是HoneycombGallery示例应用程序中styles.xml文件的一个片段。

<style name="AppTheme.Dark" parent="@android:style/Theme.Holo"> 
    ... 
    <item name="menuIconCamera">@drawable/ic_menu_camera_holo_dark</item> 
    <item name="menuIconToggle">@drawable/ic_menu_toggle_holo_dark</item> 
    <item name="menuIconShare">@drawable/ic_menu_share_holo_dark</item> 
</style> 

底部3个元素都是可绘制目录中的所有图标。每个分辨率特定的图标组仍然至少需要一个文件夹,但是您可以将深色图标组合成同一个文件夹,但不必为每个平台版本具有不同的文件夹图标。此外,你需要列出它们作为值/ attrs.xml文件引用,就像这样:

<resources> 
    <declare-styleable name="AppTheme"> 
    <attr name="listDragShadowBackground" format="reference" /> 
    <attr name="menuIconCamera" format="reference" /> 
    <attr name="menuIconToggle" format="reference" /> 
    <attr name="menuIconShare" format="reference" /> 
    </declare-styleable> 
</resources> 

此时你就可以使用“您的布局XML中引用它们? attr/NameOfYourDrawable“取消引用,如下所示:

<item android:id="@+id/menu_camera" 
     android:title="@string/camera" 
     android:icon="?attr/menuIconCamera" 
     android:showAsAction="ifRoom" /> 

发现在Android开发人员网站:http://developer.android.com/guide/practices/ui_guidelines/icon_design_menu.html

警告:由于这些资源平台版本之间切换,您应该使用Android平台的资源ID无法引用这些图标(即android.R.drawable下菜单图标) 。如果要使用任何图标或其他内部可绘制资源,则应在应用程序资源中存储这些图标或绘图的本地副本,然后从应用程序代码中引用本地副本。这样,即使系统的副本发生更改,您也可以保持对图标外观的控制。请注意,下面的网格并不是完整的。

/RES /提拉 - 华电国际(在Android 2.2及以下)

/RES /提拉 - HDPI-V#(适用于Android 2.3及以上)

您是否也尝试在2.1测试这个+手机,而不是一个模拟器?如果您没有电话,请尝试创建另一个AVD?恐怕你需要单独的文件夹。

希望这会有所帮助。

+0

这正是我所需要的。我在我的应用程序中与光明和黑暗的图标集打架。自2。3和使用白色菜单和3.0及以上使用标准主题的黑暗菜单,我不能只使用一个图标集。谢谢! – kenyu73 2012-07-13 04:08:06

+1

这应该是答案。效果很好 – 2013-12-29 17:30:35