web-dev-qa-db-ja.com

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

使っています Android.support.design.library材料設計用。

私が欲しいのは、ユーザーがログインしていないときにいくつかのメニュー項目を非表示にすることです。

NavigationViewのメニュー項目を取得するのに問題があります。

私が試してみました:

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

しかし、それは機能していません。

どうすればいいですか?

ありがとう。

35
user2331095

NavigationView.getMenu()の方法で取得できます

Menu menuNav = mNavigationView.getMenu();

次に、特定のアイテムを見つけることができます

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

NavigationViewの公式ドキュメント を参照

87
N J

最初にこのようなメニューを取得する必要があると思います:

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)
7
amit kumar

以下の方法を使用してください

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