Ответ 1
Вы можете получить это с помощью метода NavigationView.getMenu()
Menu menuNav = mNavigationView.getMenu();
Затем вы можете найти конкретный элемент
MenuItem logoutItem = menuNav.findItem(R.id.menu_logout);
<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);
Но он не работает.
Как я могу это сделать?
Спасибо.
Вы можете получить это с помощью метода NavigationView.getMenu()
Menu menuNav = mNavigationView.getMenu();
Затем вы можете найти конкретный элемент
MenuItem logoutItem = menuNav.findItem(R.id.menu_logout);
Я думаю, вы должны сначала получить меню следующим образом:
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)
просто используйте ниже
nav_draw = (NavigationView) findViewById(R.id.nav_draw);
nav_draw.getMenu().findItem(R.id.navigation_item_1).setVisible(false);