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

时间:2017-06-16 10:01:42

标签: android dynamic menu bottomnavigationview

我用BottomNavigationView创建了一个活动,它运行正常。

但我无法隐藏菜单项。

我试过这段代码。

bottomNavigationView.getMenu()则findItem(R.id.tab_email).setVisible(假);

我甚至试图调用bottomNavigationView.invalidate();

赞赏所有投入。

3 个答案:

答案 0 :(得分:5)

// create UIImage from filtered image (but size is wrong)
blurredImage = [[UIImage alloc] initWithCIImage:resultImage];

removeItem(int menu_item_id),请调用此方法。

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

答案 1 :(得分:3)

这对我有用:

/**
 * 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);,则可以看到特定的菜单

更新:轻松隐藏/显示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);
}

答案 2 :(得分:1)

您可以使用以下示例:

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