问题:
我们使用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);
解决完毕之后的画面: