Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I get menu item in NavigationView?

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

like image 820
user2331095 Avatar asked Jul 07 '15 10:07

user2331095


People also ask

Which method is used to handle clicks on the menu items of the navigation view?

You have to use OnNavigationItemSelectedListener(MenuItem item) method.

What is NavigationView in Android?

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 .


2 Answers

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

See Official documentation for NavigationView

like image 141
N J Avatar answered Oct 20 '22 18:10

N J


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) 
like image 44
amit kumar Avatar answered Oct 20 '22 19:10

amit kumar