如何在 BottomNavigationView 中隐藏和显示菜单?

How to hide and show a menu in BottomNavigationView?

我用 BottomNavigationView 创建了一个 activity,它工作正常。

但是我无法隐藏菜单项。

我试过这个代码。

bottomNavigationView.getMenu().findItem(R.id.tab_email).setVisible(false);

我什至尝试调用 bottomNavigationView.invalidate();

感谢所有意见。

这对我有用:

/**
 * Hides specified item in BottomNavigation View
 *
 * @param id   - id of the menu item - example R.id.profile
 * @param view - instance of BottomNavigationView
 */
public void hideBottomNavigationItem(int id, BottomNavigationView view) {
    BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0);
    for (int i = 0; i < menuView.getChildCount(); i++) {
        BottomNavigationItemView itemView = (BottomNavigationItemView) menuView.getChildAt(i);
        if (itemView.getId() == id) {
            itemView.setVisibility(View.GONE);
        }
    }
}

同样,如果您在上面的代码中设置 itemView.setVisibility(View.VISIBLE); 而不是 itemView.setVisibility(View.GONE);,则特定菜单将可见

更新: 轻松 hide/show BottomNavigationMenu 中的菜单项

public void hideBottomNavigationItem(int id, BottomNavigationView view) {
    BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0);
    menuView.findViewById(id).setVisibility(View.GONE);
}

public void showBottomNavigationItem(int id, BottomNavigationView view) {
    BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0);
    menuView.findViewById(id).setVisibility(View.VISIBLE);
}
    bottomNavigation.getMenu().removeItem(R.id.nav_user_download);

removeItem(int menu_item_id),调用这个方法

我尝试了hide/show方法@Sachin Rao,但效果不是很好。所以我终于找到了这种方式,它对我来说效果很好。

您可以使用以下示例:

BottomNavigationMenuView menuView = rootView.findViewById(R.id.my_bottom_nav_menu);
menuView.findViewById(R.id.action_menu_need_to_hide).setVisibility(View.GONE);