【问题标题】:How can I get menu item in NavigationView?如何在 NavigationView 中获取菜单项?
【发布时间】:2015-09-24 18:16:51
【问题描述】:
<android.support.design.widget.NavigationView
    android:id="@+id/drawer_nav"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar"
    app:headerLayout="@layout/drawer_header"
    app:menu="@menu/menu_drawer"
    />

我正在使用android.support.design.library 进行材料设计。

我想要的是在用户未登录时隐藏一些菜单项。

现在我无法在NavigationView 中获取菜单项。

我试过了:

MenuItem logoutItem = (MenuItem) mNavigationView.findViewById(R.id.menu_logout);
logoutItem.setVisible(false);

但它不起作用。

我该怎么做?

谢谢。

【问题讨论】:

    标签: android android-support-library android-menu android-design-library android-navigationview


    【解决方案1】:
    View navHeader=navigationView.getHeaderView(0);[![enter image description here][1]][1]
    

    navMenu=navigationView.getMenu();

    1. 列表项

      //work for login and logout menu
      if (MyPreferences.getBoolean(BaseActivity.this,ConstantValues.KEY_IS_LOGIN)){
          navMenu.getItem(0).setVisible(false);
          navMenu.getItem(9).setVisible(true);
      }else {
          navMenu.getItem(0).setVisible(true);
          navMenu.getItem(9).setVisible(false);
      }
      

    【讨论】:

      【解决方案2】:

      你可以通过

      navigationView.Menu.GetItem(menu_index)
      

      【讨论】:

        【解决方案3】:

        您可以通过 NavigationView.getMenu()

        的方法获取
        Menu menuNav = mNavigationView.getMenu();
        

        然后你可以通过

        找到具体的项目
        MenuItem logoutItem = menuNav.findItem(R.id.menu_logout);
        

        Official documentation for NavigationView

        【讨论】:

        • 你是我的英雄
        【解决方案4】:

        我认为你应该先得到这样的菜单:

        navigationView.getMenu().findItem(R.id.login).setVisible(false);
        

        此代码的主要方面是调用 navigationView.getMenu() 从中获取菜单,您将获得当前膨胀菜单的引用并调用 findViewById(),然后您可以随心所欲。

        对于项目组 ex:-

        <group
        android:id="@+id/group_1"
        android:checkableBehavior="single"
        android:visible="false">
        ...
        

        然后你可以使用 :-

        来控制它
        navigationView.getMenu().setGroupVisible(R.id.group_1, true)
        

        【讨论】:

          【解决方案5】:

          就用下面的方式

          nav_draw = (NavigationView) findViewById(R.id.nav_draw);
          nav_draw.getMenu().findItem(R.id.navigation_item_1).setVisible(false);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-02-23
            • 2015-10-10
            • 1970-01-01
            • 2015-11-17
            • 1970-01-01
            • 2015-12-13
            相关资源
            最近更新 更多