如何在 NavigationView 中获取菜单项?
Posted
技术标签:
【中文标题】如何在 NavigationView 中获取菜单项?【英文标题】:How can I get menu item in NavigationView? 【发布时间】:2015-09-24 18:16:51 【问题描述】:<android.support.design.widget.NavigationView
android:id="@+id/drawer_nav"
android:layout_
android:layout_
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);
但它不起作用。
我该怎么做?
谢谢。
【问题讨论】:
【参考方案1】:View navHeader=navigationView.getHeaderView(0);[![enter image description here][1]][1]
navMenu=navigationView.getMenu();
列表项
//work for login and logout menu
if (MyPreferences.getBoolean(BaseActivity.this,ConstantValues.KEY_IS_LOGIN))
navMenu.getItem(0).setVisible(false);
navMenu.getItem(9).setVisible(true);
else
navMenu.getItem(0).setVisible(true);
navMenu.getItem(9).setVisible(false);
【讨论】:
【参考方案2】:你可以通过
navigationView.Menu.GetItem(menu_index)
【讨论】:
【参考方案3】:您可以通过 NavigationView.getMenu()
的方法获取Menu menuNav = mNavigationView.getMenu();
然后你可以通过
找到具体的项目MenuItem logoutItem = menuNav.findItem(R.id.menu_logout);
见Official documentation for NavigationView
【讨论】:
你是我的英雄【参考方案4】:我认为你应该先得到这样的菜单:
navigationView.getMenu().findItem(R.id.login).setVisible(false);
此代码的主要方面是调用 navigationView.getMenu() 从中获取菜单,您将获得当前膨胀菜单的引用并调用 findViewById(),然后您可以随心所欲。
对于项目组 ex:-
<group
android:id="@+id/group_1"
android:checkableBehavior="single"
android:visible="false">
...
然后你可以使用 :-
来控制它navigationView.getMenu().setGroupVisible(R.id.group_1, true)
【讨论】:
【参考方案5】:就用下面的方式
nav_draw = (NavigationView) findViewById(R.id.nav_draw);
nav_draw.getMenu().findItem(R.id.navigation_item_1).setVisible(false);
【讨论】:
以上是关于如何在 NavigationView 中获取菜单项?的主要内容,如果未能解决你的问题,请参考以下文章
更改 navigationView 的单个特定菜单项的背景颜色
Android支持:设计NavigationView勾选菜单子项
java 通过使用app:actionLayout或MenuItemCompat.setActionView()能够为抽屉的菜单项添加自定义视图,这使得NavigationView得到了更好的扩展性.
xml 通过使用app:actionLayout或MenuItemCompat.setActionView()能够为抽屉的菜单项添加自定义视图,这使得NavigationView得到了更好的扩展性..