在导航视图中以编程方式将项添加到菜单组

Gee*_*ngh 3 layout android menuitem android-studio

我正在尝试将菜单项添加到菜单组实际,但我发现无法做到这一点.我正在使用导航视图并添加下面提到的菜单:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/nav_lang_currency"
        android:title="" />

    <item
        android:id="@+id/nav_home"
        android:title="" />

    <group android:id="@+id/nav_refer" />

    <item
        android:id="@+id/nav_setting"
        android:title="" />

    <item
        android:id="@+id/nav_about_us"
        android:title="" />

    <item
        android:id="@+id/nav_logout"
        android:title="" />

</menu>
Run Code Online (Sandbox Code Playgroud)

如上所述,一切看起来都很好.

我只是想nav_refer在运行时根据业务需求在组中添加多个菜单项,但我发现无法做到这一点.

我在SO上搜索了解决方案,却发现无法做到这一点.

请建议我如何在运行时添加组中的多个菜单项.

Bha*_*esh 8

要将菜单添加到特定组,请调用此方法Menu.add(int groupId,int itemId,int order,CharSequence title)

    Menu menu = navigationView.getMenu();
    menu.add(R.id.nav_refer, 123, Menu.NONE, "Title1");
    menu.add(R.id.nav_refer, 124, Menu.NONE, "Title2");
    menu.add(R.id.nav_refer, 125, Menu.NONE, "Title3");
Run Code Online (Sandbox Code Playgroud)

重要提示:最初如果您有空组,则新添加的项目将显示在底部,要解决此问题,您需要提及组的订单.为您的所有群组添加属性android:orderInCategory="101"


Roh*_*rya 1

你可以这样做:

NavigationView navView = (NavigationView) findViewById(R.id.navView);
Menu menu = navView.getMenu();
SubMenu subMenu = menu.addSubMenu("sub menu");
subMenu.add("item 1");
subMenu.add("item 2");
subMenu.add("item 3");
Run Code Online (Sandbox Code Playgroud)