【问题标题】:Set drawable icon in menu based on theme根据主题在菜单中设置可绘制图标
【发布时间】:2012-06-25 13:10:17
【问题描述】:

我正在创建一个支持 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 中,菜单项的背景颜色是白色,这意味着我现在必须选择一个合适的深色图标。

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

【问题讨论】:

    标签: android themes drawable


    【解决方案1】:

    如果我的理解正确,您希望能够仅引用默认图标,比如“菜单刷新图标”,并让它像在系统应用程序中一样显示。我不知道有什么方法可以做到这一点,并记得阅读 Android 文档时警告不要引用默认可绘制对象,因为这些图标在未来的 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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2013-10-24
        • 2018-09-19
        • 1970-01-01
        • 1970-01-01
        • 2021-12-13
        • 2017-06-19
        • 2012-12-17
        • 1970-01-01
        相关资源
        最近更新 更多