<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" />
I am using android.support.design.library
for material design.
What I want is to hide some menu items when the user is not logged-in.
Now I have trouble to get the menu item in NavigationView
.
I have tried:
MenuItem logoutItem = (MenuItem) mNavigationView.findViewById(R.id.menu_logout); logoutItem.setVisible(false);
But it's not working.
How can I do this?
Thanks.
You have to use OnNavigationItemSelectedListener(MenuItem item) method.
com.google.android.material.navigation.NavigationView. Represents a standard navigation menu for application. The menu contents can be populated by a menu resource file. NavigationView is typically placed inside a DrawerLayout .
You can get that by method of NavigationView.getMenu()
Menu menuNav = mNavigationView.getMenu();
Then you can find specific item by
MenuItem logoutItem = menuNav.findItem(R.id.menu_logout);
I think you should first get the menu like this:
navigationView.getMenu().findItem(R.id.login).setVisible(false);
The main aspect of this code is calling navigationView.getMenu() to get the menu from this you will have a reference of current inflated menu and call findViewById() and after that you can whatever you what.
For Group of item ex:-
<group android:id="@+id/group_1" android:checkableBehavior="single" android:visible="false"> ...
and then you can control this using :-
navigationView.getMenu().setGroupVisible(R.id.group_1, true)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With