Android 子菜单代替主菜单出现

问题描述

Android 子菜单是否应该覆盖主菜单?我曾希望子菜单会出现在单击的主菜单项旁边,就像在任何桌面应用程序中一样(例如 Android Studio 中的 File/OpenRecent)。但是当显示菜单时原来的菜单消失了:

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    getMenuInflater().inflate(R.menu.menu_main,menu);
    SubMenu subMenu = menu.addSubMenu(Menu.NONE,Menu.NONE,"sub menu test");

    subMenu.add(Menu.NONE,1001,"menu " + 1001);
    subMenu.add(Menu.NONE,1002,"menu " + 1002);
    subMenu.add(Menu.NONE,1003,"menu " + 1003);

    return true;
}

我可以使用代码添加样式来更改此操作吗? (子菜单每次都会不同,因此必须以编程方式创建或至少编辑)。

解决方法

Android 子菜单是否应该覆盖主菜单?

是的。

我可以使用代码或添加样式来更改此操作吗?

不,尽管您可以创建自己的 UI 而不是使用 MenuSubMenu

我曾希望子菜单会出现在被点击的主菜单项旁边,就像在任何桌面应用中一样

一般来说,台式机的屏幕比大多数 Android 设备大得多。他们有屏幕空间来做那种飞出行为。 Android 的方法旨在缩小到更小的屏幕。您采用的任何自定义方法还需要考虑您愿意支持多小的屏幕。