在BottomNavigationView中,默认 >3 的选中效果会影响ViewPager的滑动切换时的效果,故利用反射去掉。其实就是改变 item中mShiftingMode的值。代码如下:

public static void disableShiftMode(BottomNavigationView navigationView) {
        BottomNavigationMenuView menuView = (BottomNavigationMenuView) navigationView.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 itemView = (BottomNavigationItemView) menuView.getChildAt(i);
                itemView.setShiftingMode(false);
                itemView.setChecked(itemView.getItemData().isChecked());
            }
        } catch (NoSuchFieldException | IllegalAccessException e) {
            e.printStackTrace();
        }
    }

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. Android(安卓)Studio&Xcode常用快捷键整理
  3. Android(安卓)应用程序自动更新
  4. Android小程序实现个人信息管理系统
  5. 圆形ImageView
  6. Android(安卓)Launcher3 设置壁纸请教
  7. Android之Path类
  8. 安卓仿IOS SwitchButton,增加效果体验
  9. Android图像处理(二)底片效果、怀旧效果、浮雕效果

随机推荐

  1. 如何使用mysql在php文件夹中快速更改图像
  2. 为什么这个查询需要很长时间才能执行
  3. mysql进阶(十一)外键在数据库中的作用
  4. 如何启用对MySQL服务器的外部访问?
  5. php 连接数据库 Warning: mysqli_connect
  6. XAMPP附带的mysql如何修改密码
  7. MySQL 转换函数与运算符
  8. MySQL数据库相关开发入门
  9. php&input复选框存储每个循环的值
  10. MySQL使用二进制日志来恢复数据