1

我正在创建一个支持 2.1 版和当前可用版本的应用程序。现在,在设计我正在创建的 ActionBar 时,我想利用用户当前主题和/或 Android 版本可用的可绘制对象。

Android 提供的每个版本中启用的可绘制对象都非常清晰明了,非常适合我的需求。问题。例如,我无法在整个项目的 XML 文件中访问 @android:drawable/ic_menu_refesh。当然有可能从特定的 android 版本复制图标并使用这些图标,但我真的不明白如果不从每个版本中复制图标的每个版本并跟踪 Android 的版本,我将如何使其正常工作当前正在运行并引用合适的drawable。

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

我将如何做到这一点才能使用设备的当前主题,并且仍然提供可调整的可绘制对象,以便它们适合主题的外观和感觉?

4

2 回答 2

1

如果我理解正确,您希望能够仅引用默认图标,例如“菜单刷新图标”,并让它像在系统应用程序中一样显示。我不知道如何做到这一点,并记得阅读 Android 文档时警告不要引用默认可绘制对象,因为这些图标可能会在未来的 Android 版本中发生变化,并且您的应用程序看起来不会像预期的那样。

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

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

我不明白您为什么将图标设置为灰色...我认为您忘记的是您的应用程序设置了主题,您可以选择所需的任何系统主题,或者具有从系统主题扩展的自定义主题。无论您选择深色还是浅色,您只需要您设置的主题的图标。唯一需要注意的是确保您拥有不同 API 版本的图标(即菜单图标 2.2、2.3 和 3.0+),您需要制作每个 API 版本并使用资源标识符来确保您的应用使用正确的一个。

如果您的应用程序支持多个主题,您可以让它为每个主题使用不同的图标。在我对类似问题的回答中查看如何执行此操作:

根据样式更改操作栏菜单图标

于 2013-01-30T16:58:09.370 回答
0

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

于 2012-12-03T20:41:44.067 回答