如何以编程方式隐藏导航抽屉菜单项?

时间:2016-02-26 20:18:44

标签: android android-studio navigation-drawer menuitem

我想隐藏导航抽屉菜单中的菜单项并根据使用该应用程序的用户类型显示它,根据下面的代码菜单项返回null:

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open,R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

    MenuItem target = (MenuItem)drawer.findViewById(R.id.nav_target);

    target.setVisible(false);

2 个答案:

答案 0 :(得分:27)

通过创建菜单和使用

来修复它
menu.findItem(R.id.nav_target)

@ droid8421建议。

固定代码:

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);

Menu menu =navigationView.getMenu();

MenuItem target = menu.findItem(R.id.nav_target);

target.setVisible(false);

答案 1 :(得分:0)

在开发具有两种productFlavours(免费和高级版)的应用程序时,我遇到了相同的问题

我要在免费版本中显示BuyProVersion菜单项并在高级版本中将其禁用的操作是:

Menu menu = navigationView.getMenu();
MenuItem buyPro = 
menu.findItem(R.id.buy_pro_version)
if(buildConfig.FLAVOR.equalsIgnorCase("paid")){
    //Logic for disabling BuyProVersion Menu item
buyPro.setVisible(false)
}else {
    buyPro.setVisible(true)
}

我希望有一天能对某人有所帮助。 确保在build.gradle中设置了productFlavours