Android BottomNavigationView图标/文字菜单项不适合某些设备(共4项)。在nexus 5模拟器上,您必须旋转才能显示所有项目。如果从纵向或横向视图开始并不重要,图标仅在设备旋转时显示(例如,参见下图)
我已经尝试了一些我可用于测试的物理设备,并且它在所有这些设备(小型和大型)上都能正常工作,我认为根据测试仪它也不适用于三星S7 / 8但是无法确认
答案 0 :(得分:1)
尝试这个。
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("BNVHelper", "Unable to get shift mode field", e);
} catch (IllegalAccessException e) {
Log.e("BNVHelper", "Unable to change value of shift mode", e);
}
}
并将其添加到您的BottomNavigatoionView
BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
disableShiftMode(navigation); //add the function
navigation.setSelectedItemId(R.id.your_navigation_choice); // set your first icon
答案 1 :(得分:0)
在我的情况下,它完全是一个不同的问题。
我正在从我的服务器响应中检查用户权限变量,然后删除导航项,但仅检查活动是否是onCreate中的新实例,这就是屏幕旋转时不同的原因。
if (savedInstanceState == null)
checkUserPermissions();
private void checkUserPermissions(){
navigation.getMenu().removeItem(R.id.navigation_pickup);
...