<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"
/>
使っています Android.support.design.library
材料設計用。
私が欲しいのは、ユーザーがログインしていないときにいくつかのメニュー項目を非表示にすることです。
NavigationView
のメニュー項目を取得するのに問題があります。
私が試してみました:
MenuItem logoutItem = (MenuItem) mNavigationView.findViewById(R.id.menu_logout);
logoutItem.setVisible(false);
しかし、それは機能していません。
どうすればいいですか?
ありがとう。
NavigationView.getMenu()の方法で取得できます
Menu menuNav = mNavigationView.getMenu();
次に、特定のアイテムを見つけることができます
MenuItem logoutItem = menuNav.findItem(R.id.menu_logout);
最初にこのようなメニューを取得する必要があると思います:
navigationView.getMenu().findItem(R.id.login).setVisible(false);
このコードの主な側面は、navigationView.getMenu()を呼び出してこれからメニューを取得することです。現在の膨張メニューの参照を取得し、findViewById()を呼び出します。その後、何でもできます。
アイテムのグループの例:-
<group
Android:id="@+id/group_1"
Android:checkableBehavior="single"
Android:visible="false">
...
そして、あなたはこれを使用してこれを制御することができます-
navigationView.getMenu().setGroupVisible(R.id.group_1, true)
以下の方法を使用してください
nav_draw = (NavigationView) findViewById(R.id.nav_draw);
nav_draw.getMenu().findItem(R.id.navigation_item_1).setVisible(false);