根据主题在菜单中设置可绘制图标

时间:2012-06-23 12:57:25

标签: android themes drawable

我正在创建一个支持2.1版本的应用程序,以及目前可用的版本。 现在,我想在设计我正在创建的ActionBar时使用可用于用户当前主题和/或Android版本的drawable。

Android提供的每个版本都启用了drawable,非常清晰,不含糊,完全符合我的需求。 问题。我无法在整个项目中访问我的XML文件中的@android:drawable / ic_menu_refesh。 当然有可能从特定的Android版本中复制图标并使用它们,但我无法真正看到如果不从每个版本复制每个版本的图标并跟踪Android的版本,我将如何做到这一点。目前正在运行并参考合适的drawable。

另一个问题,像Sense这样的主题(?)让事情变得更加艰难。在我的应用程序中,我想使用该设备的当前主题。就我而言,我有一个使用Dark Holo-theme的ICS设备和一个使用其默认主题的2.3.6设备。在这些情况下,这意味着为ActionBar /菜单选择合适的浅色可绘制颜色。 问题。在我的HTC Sensation S的Sense中,菜单项的背景颜色为白色,这意味着我现在必须选择合适的黑色图标。

我如何才能使用该设备的当前主题,并仍然提供适应性的drawables,以便它们适合外观和放大器。感觉主题?

2 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望能够仅引用默认图标,例如“菜单刷新图标”,并将其显示为系统应用程序中的图标。我不知道如何做到这一点,并回忆阅读Android文档警告不要引用默认drawables,因为这些图标可能会在Android的未来版本中更改,您的应用程序将无法按预期显示。

通常,您需要为每个菜单项/操作栏项/通知/等创建自己的图标。有一些简单的工具可以为不同的系统主题创建自定义和默认的Android图标。您可以使用res文件夹中的资源标识符为不同的API版本/布局/密度/等提供不同的图标。

http://android-ui-utils.googlecode.com/hg/asset-studio/dist/index.html

我不明白为什么你要把你的图标设置为灰色...我认为你忘了的是你的应用程序设置主题,你可以选择你想要的任何系统主题,或者有一个自定义主题,从系统主题。无论您选择深色还是浅色,您只需要设置主题的图标。这里唯一的解决方案是确保您拥有不同API版本的图标(即菜单图标2.2 vs 2.3 vs 3.0+),您只需制作每个API版本并使用资源标识符来确保您的应用使用适当的。

如果您的应用支持多个主题,则可以让它为每个主题使用不同的图标。在我对类似问题的回答中看看如何做到这一点:

Change ActionBar Menu Icons depending on Style

答案 1 :(得分:0)

我能够完成这项工作的唯一方法是复制Android提供的图标,然后将它们重新着色为中间的灰色阴影。不是一个非常理想的解决方案,但它必须这样做。