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

6

我试图通过编程的方式向菜单组添加菜单项,但是我没有找到实现这一目标的方法。我正在使用导航视图并已添加以下菜单:

<?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>

如之前所述,一切看起来都很好。

根据业务需求,我想在运行时在nav_refer组中添加多个菜单项,但我找不到方法。

我在SO上搜索解决方案,但未找到方法。

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

3个回答

11
要将菜单添加到特定的组中,请调用此方法 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");

重要提示:如果您的分组是空的,那么新添加的项目将出现在底部,为解决此问题,您需要为分组指定顺序。为所有分组添加一个属性android:orderInCategory="101"


我也遇到了类似的问题,但上面的解决方案对我不起作用。101是从哪里来的? - Ankit Batra
@AnkitBatra 请访问 https://dev59.com/q14b5IYBdhLWcg3wxEGm 了解 android:orderInCategory 属性。 - Bharatesh
谢谢,@Bharatesh。我已经解决了我遇到的问题。 - Ankit Batra
在这种情况下,物品将会在顶部。 - user25
如果您有3个组,并且需要向第二个组添加项目,则为第一组设置100顺序,为第二个组设置101顺序,为第三个组设置102顺序,然后使用menu.add(R.id.nav_refer, ITEM_ID, 101, ITEM_TITLE);将项目添加到第二个组。 - user25

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");

-2

创建 res --> 菜单文件新布局

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <group android:checkableBehavior="single">
        <item android:title="حساب کاربری">
            <menu>
                <group android:title="حساب کاربری">
                    <item android:title="ورود" />
                    <item android:title="ثبت نام" />
                </group>
            </menu>
        </item>
    </group>
    <group android:checkableBehavior="single">
        <item android:title="سایت">
            <menu>
                <group android:title="حساب کاربری">
                    <item android:title="ورود" />
                    <item android:title="ثبت نام" />
                </group>
            </menu>
        </item>
    </group>
</menu>

将 NavigationView 设置为 app:menu="@menu/drawer_view"

希望能帮到你


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接