<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.
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);
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)
verwenden Sie einfach unten
nav_draw = (NavigationView) findViewById(R.id.nav_draw);
nav_draw.getMenu().findItem(R.id.navigation_item_1).setVisible(false);