我想在一些片段中隐藏bottomNavigationView。
我已经尝试了下面的代码,但它有一个闪烁的效果。(bottomNavigationView隐藏之前,nextFragment变得可见。
val navController = this.findNavController(R.id.nav_host_home)
navController.addOnDestinationChangedListener { _, destination, _ ->
when (destination.id) {
R.id.searchArticlesFragment -> bnvMain.visibility = View.GONE
R.id.articleFragment -> bnvMain.visibility = View.GONE
else -> bnvMain.visibility = View.VISIBLE
}
}
我也试过另一个代码。但是它调整了片段的大小。并且在目标片段中给出了OutOfMemoryException。
supportFragmentManager.registerFragmentLifecycleCallbacks(object :
FragmentManager.FragmentLifecycleCallbacks() {
override fun onFragmentViewCreated(
fm: FragmentManager,
f: Fragment,
v: View,
savedInstanceState: Bundle?
) {
when (f) {
is SearchArticlesFragment -> bnvMain.visibility = View.GONE
is ArticleDetailsFragment -> bnvMain.visibility = View.GONE
else -> bnvMain.visibility = View.VISIBLE
}
}
}, true)
请帮助我如何以最好的方式隐藏bottomNavigationView?这是唯一可以隐藏bottomNavigationView的方法吗?youtube和Instagram是如何实现这种行为的?
1条答案
按热度按时间cl25kdpy1#
如果您的代码遵循单活动设计模式,那么下面的解决方案适合您。
1.在父Activity内创建一个方法以隐藏/显示bottomNavigationView。
1.创建一个BaseFragment类(通过扩展此BaseFragment类创建片段)
1.在BaseFragment中创建一个变量以保存bottomNavigationViewVisibility(隐藏/显示)
1.在BaseFragment的onActivityCreated方法中,通过调用我们在步骤1中创建的方法,获取活动引用并设置bottomNavigationViewVisibility。
1.在您创建的每个片段中,只需设置bottomNavigationViewVisibility变量。
示例:在parentActivity布局中,文件添加bottomNavigationView
步骤1:在父活动中,创建一个方法来更改可见性。
步骤2、3和4:
第五步: