如何在NavigationView中获取菜单项?

时间:2015-07-07 10:02:17

标签: android android-support-library android-menu android-design-library android-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);

但它不起作用。

我该怎么做?

感谢。

5 个答案:

答案 0 :(得分:86)

您可以通过 NavigationView.getMenu()

的方法获得该功能
$xml->xpath('a:LeggeRegionale[@id="urn:nir:legge:2014-12-12;26"]/a:articolato/a:articolo[@id="art41"]/a:comma[@id="art41-com1"]/a:alinea')

然后你可以通过

找到具体的项目
Menu menuNav = mNavigationView.getMenu();

请参阅Official documentation for NavigationView

答案 1 :(得分:7)

我认为你应该首先得到这样的菜单:

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)

答案 2 :(得分:5)

只需使用以下方式

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

答案 3 :(得分:0)

您可以通过以下方式获取物品

navigationView.Menu.GetItem(menu_index)

答案 4 :(得分:0)

create table tmp_table(
    name varchar(50),         -- adapt the datatypes and lengths to your requirement
    phone_no int,
    person_2 varchar(50),
    person_4 varchar(50)
);
insert into tmp select name, phone, person_2, person_4 from mytable;
drop table mytable;

create table mytable(
    name varchar(50),
    phone_no int,
    person_2 varchar(50),
    person_4 varchar(50)
);
insert into mytable select name, phone, person_2, person_4 from tmp_table;
drop table tmp_table;   

navMenu = navigationView.getMenu();

  1. 列表项

    View navHeader=navigationView.getHeaderView(0);[![enter image description here][1]][1]