【问题标题】:Add items to menu group programatically in navigation view在导航视图中以编程方式将项目添加到菜单组
【发布时间】:2016-07-19 22:06:17
【问题描述】:

我正在尝试务实地将菜单项添加到菜单组,但我发现没有办法做到这一点。我正在使用导航视图并添加了下面提到的菜单:

<?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 上搜索了解决方案,但没有找到办法。

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

【问题讨论】:

    标签: android android-studio layout menuitem


    【解决方案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】:

      要将菜单添加到特定组,请调用此方法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从何而来?
      • @AnkitBatra 请访问stackoverflow.com/questions/28715765/… 获取android:orderInCategory 属性。
      • 谢谢,@Bharatesh。我已经解决了我面临的问题。
      • 在这种情况下,项目将在顶部
      • 例如您有 3 个,您需要将项目添加到第二组,然后为第一组设置 100 个订单,为第二组设置 101,为口渴设置 102,然后使用 menu.add(R.id.nav_refer, ITEM_ID, 101, ITEM_TITLE); 将项目添加到第二组
      【解决方案3】:

      create 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"

      希望对你有帮助

      【讨论】:

        【解决方案4】:
        NavigationView navigationView = findViewById(R.id.nav_view);
        Menu menu = navigationView.getMenu();
        menu.add("Titel");
        

        【讨论】:

          猜你喜欢
          • 2013-10-29
          • 1970-01-01
          • 2013-12-16
          • 2023-03-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多