web-dev-qa-db-fra.com

Comment puis-je obtenir un élément de menu dans 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"
    />

J'utilise Android.support.design.library pour la conception des matériaux.

Ce que je veux, c'est masquer certains éléments de menu lorsque l'utilisateur n'est pas connecté.

Maintenant, j'ai du mal à obtenir l'élément de menu dans NavigationView.

J'ai essayé:

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

Mais ça ne marche pas.

Comment puis-je faire cela?

Merci.

35
user2331095

Vous pouvez obtenir cela par la méthode de NavigationView.getMenu ()

Menu menuNav = mNavigationView.getMenu();

Ensuite, vous pouvez trouver un élément spécifique par

MenuItem logoutItem = menuNav.findItem(R.id.menu_logout);

Voir Documentation officielle pour NavigationView

87
N J

Je pense que vous devriez d'abord obtenir le menu comme ceci:

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

L'aspect principal de ce code appelle navigationView.getMenu () pour obtenir le menu à partir de cela, vous aurez une référence du menu gonflé actuel et appelez findViewById () et après cela, vous pourrez tout ce que vous voulez.

Pour le groupe d'articles ex: -

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

et ensuite vous pouvez contrôler cela en utilisant: -

navigationView.getMenu().setGroupVisible(R.id.group_1, true)
7
amit kumar

utilisez simplement ci-dessous

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