关闭BottomNavigationView的滑动动画

问题:

我们使用BottomNavigationView的时候是不是超过三个菜单选项的时候 点击菜单就看不到其他的菜单
而且谷歌也没有具体的API明确是什么问题

其实我们可以使用反射 来解决这个难题
如图:

话不多说 上代码

public class BNVEffect {
    @SuppressLint("RestrictedApi")
    public static void disableShiftMode(BottomNavigationView view) {
        BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0);
        try {
            Field shiftingMode = menuView.getClass().getDeclaredField("mShiftingMode");
            shiftingMode.setAccessible(true);
            shiftingMode.setBoolean(menuView, false);
            shiftingMode.setAccessible(false);
            for (int i =0; i < menuView.getChildCount(); i++) {
                BottomNavigationItemView item = (BottomNavigationItemView) menuView.getChildAt(i);
                item.setShiftingMode(false);
                item.setChecked(item.getItemData().isChecked());
            }
        } catch (NoSuchFieldException e) {
            Log.e("BNVEffect","Unable to get shift mode field", e);
        } catch (IllegalAccessException e) {
            Log.e("BNVEffect","Unable to change value of shift mode", e);
        }
    }
}

调用

  /*通过反射机制显示其他几个导航菜单*/
  BNVEffect.disableShiftMode(bottnavi);

解决完毕之后的画面:

猜你喜欢

转载自www.cnblogs.com/jiuyu168/p/12803956.html