【问题标题】:How to select standard Android menu icons?如何选择标准的 Android 菜单图标?
【发布时间】:2011-07-18 11:58:04
【问题描述】:

我想根据手机当前运行的 Android 版本选择一个标准的 Android 菜单图标。

示例图标:

记住!我不想要 drawables 用于此目的,我想要基于设备 API 的正确图标。

这可能吗?

【问题讨论】:

  • android.R.ic_more 资源还是什么?
  • 除非你的所有菜单图标都来自操作系统,否则你不想走这条路。设备制造商可以并且确实可以更改这些图标。如果你所有的图标都来自操作系统,那么它们都是一致的。但是,如果您将一些操作系统图标和您自己的一些图标混合在一起,那么它们将不一致(您的外观与设备 X 的外观),并且您的应用程序看起来不专业。应用程序内部的一致性比设备的外部一致性更重要。因此,如果您有自己的图标,请将您想要的 Android 图标复制到您的项目中。

标签: android


【解决方案1】:

使用可绘制对象有什么问题?图标是可绘制的。如果您使用R.android.drawable.* drawables,您将获得基于您的手机的适当图像(Sense、库存 Android 2.0、库存 Android 2.3 等)。

【讨论】:

  • 我认为你不应该这样做,不能保证在未来版本的 Android drawables 中会存在同名。您应该将可绘制对象复制到您自己的项目中,并在必要时添加特定于 API 版本的版本。
  • @Joseph:嗯,不。复制它们是完全错误的方法——您必须从每个可能的 Android 版本(它们不断变化)和每个可能的自定义 UI(Sense、MotoBlur、TouchViz)中获取它们。它们是在 Android SDK (developer.android.com/reference/android/R.drawable.html) 中定义的,因此保证会保留。
  • 附带说明,一些默认可绘制对象在 sdk 中被标记为私有。不幸的是,这意味着您必须将某些菜单图标复制到您的项目中(我认为刷新是其中之一)才能使用它们。
  • @JosephEarl 是对的,而你,EboMike,绝对是错的。正如 Google 在文档中所说,您的方法完全错误:Because these resources can change between platform versions, you should not reference these icons using the Android platform resource IDs (i.e. menu icons under android.R.drawable). If you want to use any icons or other internal drawable resources, you should store a local copy of those icons or drawables in your application resources, then reference the local copy from your application code.
  • @EboMike 也许您可以保证具有这些名称的文件会存在,但您无法保证它们的大小/纵横比等!
【解决方案2】:

看看here,你必须使用android.R.drawable.<name>才能使用它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-10
    • 2021-03-27
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 2013-01-23
    • 2019-11-09
    • 1970-01-01
    相关资源
    最近更新 更多