public static void activateNewButton(BottomNavigationView bottomNavigationView, int position) { BottomNavigationMenuView bottomNavigationMenuView = (BottomNavigationMenuView) bottomNavigationView.getChildAt(0); try { Method activateNewButtonMethod = bottomNavigationMenuView.getClass().getDeclaredMethod("activateNewButton", int.class); activateNewButtonMethod.setAccessible(true); activateNewButtonMethod.invoke(bottomNavigationMenuView, position); } catch (Exception e) { e.printStackTrace(); } }
/** * 取消大于三项时占用其他 item 的空间 * * @param bottomNavigationView */ public static void disableShiftMode(BottomNavigationView bottomNavigationView) { BottomNavigationMenuView bottomNavigationMenuView = (BottomNavigationMenuView) bottomNavigationView.getChildAt(0); try { Field shiftingModeField = bottomNavigationMenuView.getClass().getDeclaredField("mShiftingMode"); shiftingModeField.setAccessible(true); shiftingModeField.setBoolean(bottomNavigationMenuView, false); shiftingModeField.setAccessible(false); for (int i = 0; i < bottomNavigationMenuView.getChildCount(); i++) { BottomNavigationItemView bottomNavigationItemView = (BottomNavigationItemView) bottomNavigationMenuView.getChildAt(i); bottomNavigationItemView.setShiftingMode(false); bottomNavigationItemView.setChecked(bottomNavigationItemView.getItemData().isChecked()); } } catch (Exception e) { e.printStackTrace(); } }