【问题标题】:Android menu icon from a shape drawable来自可绘制形状的 Android 菜单图标
【发布时间】:2023-12-10 12:43:01
【问题描述】:

有谁知道是否可以使用 XML ShapeDrawable(或任何其他不是图像的 XML drawable)作为菜单项图标?这不可能吗?如果是,如何实现这一目标?

TIA!

【问题讨论】:

  • 是的,你的drawable可以是一个XML drawable。您在菜单 XML 中使用 android:icon=@drawable/..." 以相同的方式引用它
  • 标签内给它一个固定的
  • 你会碰巧有一个工作示例/sn-p吗?如果能分享一下就好了?
  • @pskink:你这个男人!谢谢。完全错过了 size 属性。

标签: android xml drawable menuitem


【解决方案1】:

自从我完成 android 开发以来已经有一段时间了,但是使用 JB,您可以将它放在您的资源中并从应用清单中引用它(我相信就是这样?)

【讨论】:

  • 放置什么?我正在使用我的 res/drawable 目录中的 ShapeDrawable,但它根本没有显示出来。我猜它“可能”可能是因为没有与 ShapeDrawable 关联的尺寸信息。
【解决方案2】:

有两种方法可以做到这一点。您可以通过编程方式更改图标

menu.getItem(0).setIcon(getResources().getDrawable(R.drawable.ic_launcher));

或者您可以在 menu.xml 文件中修复图标

android:icon="@drawable/ic_whaterver"

【讨论】:

    【解决方案3】:

    pskink 在 cmets 中说过(但作为答案更容易找到)。给drawable一个<size>标签。

    这对我来说实际上有点奇怪。通常,大小仅用于获取<shape> 的纵横比,因此可能会假设使用android:height="1"android:width="1" 设置大小就足够了。在这种情况下不是这样 - 可绘制对象将以 1x1 dp 的大小出现(可能根本不会)。

    有趣的是,如果您将尺寸设置为比菜单项大得多,它会适当地按比例缩小。因此,您可以将 android:heightandroid:width 设置为像 800dp 这样的离谱的东西,不用担心。

    【讨论】:

      最近更新 更多