我需要以编程方式设置菜单图标(不通过布局文件),并且还需要从file:///android_asset/加载图标文件(不作为已编译的Drawable加载)。我发现显示的图标的尺寸相对较小。看起来像android调整它的大小或其他什么,我不想在没有代码的情况下达到相同的效果。

如您在所附的屏幕快照中所见,使用类似的代码填充了菜单“globe-36”,“globe-48”和“globe-72”,它们的图像分别为36x36、48x48和72x72 :(这是我在应用程序中加载图标的方式,我必须)

            MenuItem mi = menu.add(Menu.NONE, i++, i++, icon);
            Drawable d = Drawable.createFromStream(getAssets().open(icon + ".png"), icon);
            mi.setIcon(d);

并且,菜单“globe-aset”和“barcode-asset”的填充方式如下:
    MenuItem mi = menu.add(Menu.NONE, i++, i++, "globe-asset");
    mi.setIcon(R.drawable.globe);

最佳答案

菜单图标的大小为:

  • ldpi:36x36
  • mdpi:48x48
  • hdpi:72x72
  • xhdpi:96x96
  • xxhdpi:144x144

  • 因为您的 Globe-asset 大约是 globe-48 的两倍,所以我假设您的屏幕截图来自xhdpi设备,该设备期望菜单图标为96x96。

    10-07 19:47