不废话,简单写,以及代码解释
写一个Helper类,写一个方法,方法名叫disbleShiftMode,传入BottomNavigationView参数,下面代码,就是去除ShiftingMode效果,没有别的了。
//获取指定位置的视图
BottomNavigationMenuView menuView = (BottomNavigationMenuView) navigationView.getChildAt(0);
//去掉BottomNavigationMenuView的默认动画效果ShiftingMode
try {
Field shiftingMode = menuView.getClass().getDeclaredField("mShiftingMode");
//反射时可以访问私有变量
shiftingMode.setAccessible(true);
shiftingMode.setBoolean(menuView, false);
shiftingMode.setAccessible(false);
//循环menView子元素个数
for (int i = 0; i < menuView.getChildCount(); i++) {
BottomNavigationItemView itemView = (BottomNavigationItemView) menuView.getChildAt(i);
//设置关闭ShiftingMode
itemView.setShiftingMode(false);
//重新检查,真正关闭掉ShiftingmMode
itemView.setChecked(itemView.getItemData().isChecked());
}
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
有错请指正,本人马上修改。