如何在BottomNavigationView中动态隐藏菜单项?

Ram*_*Ram 24 android bottomnavigationview

我想根据某些条件动态隐藏BottomNavigationView的菜单项.我试过以下但是没有用.

mBottomNavigationView.getMenu()
            .findItem(R.id.item_name)
            .setVisible(false);

mBottomNavigationView.invalidate();
Run Code Online (Sandbox Code Playgroud)

Ram*_*Ram 51

mBottomNavigationView.getMenu().removeItem(R.id.item_name);
Run Code Online (Sandbox Code Playgroud)

removeItem可以解决问题.不确定为什么setVisible方法不起作用.

  • 这对我有用,但是如果我的菜单项少于5个,则底部导航项的间距不均匀。我认为这可能与“换档模式”有关?在理想的世界中,导航将平均分配任意数量的菜单项。 (2认同)

Mah*_*tab 8

尝试这个:

navView.getMenu().findItem(R.id.your_menu_item_id).setVisible(true);
navView.getMenu().findItem(R.id.your_menu_item_id).setVisible(false);
Run Code Online (Sandbox Code Playgroud)


Sah*_*oor 7

setVisibility 应该适合你。仅供参考,以下示例在 kotlin 中。

bottomNavigationView.menu.findItem(R.id.navigation_item_two).isVisible = false
Run Code Online (Sandbox Code Playgroud)


DEE*_*IJA 6

我试过大多数解决方案,但这对我有用,

用于动态隐藏项目: bottomNavigationView.findViewById(R.id.xyz).setVisibility(View.GONE);

使项目可见: bottomNavigationView.findViewById(R.id.xyz).setVisibility(View.VISIBLE);


abd*_*lek 5

您可以隐藏通过设置菜单项isVisiblefalse使用建议的属性isVisible科特林。但是,根据我的观察,您的菜单项已从Android 9BottomNavigationView上删除。

bottomNavigation.menu.findItem(R.id.menu_item).isVisible = false
Run Code Online (Sandbox Code Playgroud)

如果将单色用于底部导航视图的背景,则可以使用类似的方法将菜单项保存到位。例如,右边的那个。

// 0x000000 is black as an example
bottomNavigation.menu.findItem(R.id.menu_item).icon = ColorDrawable(0x000000)
// and disable for the actions
bottomNavigation.menu.findItem(R.id.menu_item).isEnabled = false
Run Code Online (Sandbox Code Playgroud)