Android中BottomNavigationView切换时去除效果

来源:互联网 发布:企业数据库软件 编辑:程序博客网 时间:2024/05/30 04:29

在BottomNavigationView中,默认 >3 的选中效果会影响ViewPager的滑动切换时的效果,故利用反射去掉。其实就是改变 item中mShiftingMode的值。代码如下:

public static void disableShiftMode(BottomNavigationView navigationView) {
        BottomNavigationMenuView menuView = (BottomNavigationMenuView) navigationView.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 itemView = (BottomNavigationItemView) menuView.getChildAt(i);
                itemView.setShiftingMode(false);
                itemView.setChecked(itemView.getItemData().isChecked());
            }
        } catch (NoSuchFieldException | IllegalAccessException e) {
            e.printStackTrace();
        }
    }