不废话,简单写,以及代码解释
写一个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();
}有错请指正,本人马上修改。
本文介绍如何通过代码方式禁用Android中BottomNavigationView的ShiftingMode效果,具体包括使用反射来修改mShiftingMode字段及遍历子项进行设置的方法。

被折叠的 条评论
为什么被折叠?



