如何通过编程隐藏导航抽屉菜单项?

12
我想隐藏导航抽屉菜单中的一个菜单项,并根据使用应用程序的用户类型显示它。根据下面的代码,菜单项返回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);

你尝试过使用 menu.findItem(R.id.nav_target) 吗? - droid8421
@droid8421 没有,因为我需要声明菜单。 - Convict Moody
你尝试过 https://dev59.com/JInca4cB1Zd3GeqP5QpR#29239511 吗? - king
正如我所说,我想隐藏导航抽屉菜单项而不是选项菜单项。 - Convict Moody
2个回答

40

通过创建菜单并使用它来解决了问题

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);

0

在开发一个有两个产品口味(免费和高级)的应用程序时,我遇到了同样的问题。

为了在免费版本中显示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。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接