需求问题
在一个【Activity】中,【XML】布局添加【fragment】和【BottomNavigationView】实现界面切换效果,类似微信底部的页面切换效果,设置底部切换按钮为3个,对应三个【Fragment】。
使用【Navigation】进行页面导航,当我们进行上面的3个【Fragment】切换时,没有什么问题,但是当我们想要从这3个【Fragment】中跳转到其他的新的【Fragment】时,发现在新的【Fragment】下面仍然会出现【BottomNavigationView】,此时我们需要清除这个【BottomNavigationView】。
原因
我们只创建了一个【Activity】,然后使用的所有【Fragment】都是基于这一个【Activity】创建的,所有的【Navigation】导航都是在这里面完成的,而【Activity】的布局有【BottomNavigationView】导致所有的【Fragment】显示页面下面都有【BottomNavigationView】。
解决方式
在不需要【BottomNavigationView】的【Fragment】中,隐藏它
//在fragment中获取Activity中的布局控件
val bottomHostView = requireActivity().findViewById<BottomNavigationView>(R.id.nav_view)
//隐藏这个控件
bottomHostView.visibility = View.GONE
在需要【BottomNavigationView】的【Fragment】中,显示它
val bottomHostView = requireActivity().findViewById<BottomNavigationView>(R.id.nav_view)
bottomHostView.visibility = View.VISIBLE