web-dev-qa-db-de.com

Wie kann ich einen Menüpunkt in NavigationView bekommen?

<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"
    />

Ich benutze Android.support.design.library für das Materialdesign.

Ich möchte einige Menüelemente ausblenden, wenn der Benutzer nicht angemeldet ist.

Jetzt habe ich Probleme, den Menüpunkt in NavigationView zu bekommen.

Ich habe versucht:

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

Aber es funktioniert nicht.

Wie kann ich das machen?

Vielen Dank.

35
user2331095

Sie können dies mit der Methode NavigationView.getMenu () ermitteln.

Menu menuNav = mNavigationView.getMenu();

Dann können Sie bestimmte Artikel von finden

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

Siehe Offizielle Dokumentation zu NavigationView

87
N J

Ich denke, Sie sollten zuerst das Menü wie folgt erhalten:

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

Der Hauptaspekt dieses Codes ist der Aufruf von navigationView.getMenu (), um das Menü daraus zu erhalten. Sie haben eine Referenz des aktuellen aufgeblasenen Menüs und rufen findViewById () auf. Danach können Sie was auch immer.

Für Artikelgruppe ab: -

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

und dann können Sie dies steuern mit: -

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

verwenden Sie einfach unten

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