之前项目使用的底部导航按钮都是用 RadioGroup 包裹 RadioButton 配合状态选择器实现的。这种实现方式布局是很灵活的,实现虽然也简单,但是要做复杂点的效果还是比较麻烦。
Google 官方推荐的是 BottomNavigationView + menu :
常用的方法有:
setOnItemSelectedListener 获取选择监听进行对应的界面显示也可以配合 NavController 本质也是通过 setOnItemSelectedListener
getOrCreateBadge 可以轻松实现数字红点
高级点可以通过 navView.getChildAt(0).getChildAt(0..itemcount) 获取 NavigationBarItemView,
对单个 item 的图标及颜色自定义大小,代码示例:
NavigationBarMenuView menuView = (NavigationBarMenuView) binding.navView.getChildAt(0);
NavigationBarItemView itemView = (NavigationBarItemView) menuView.getChildAt(1);
itemView.setIconSize(100);
itemView.setTextColor(new ColorStateList(new int[][]{}, new int[]{}));
配合 setOnItemSelectedListener 就可以轻松实现某个item选中放大,取消选中还原的效果,
代码如下: