我正在尝试创建单个活动Android应用程序 . 我有使用BottomNavigationView的MainActivity(仅活动),三个顶级片段和一些子片段 . 我的要求是每当屏幕显示顶级片段时,底部导航应该是可见的,以便可以进行切换 . 但是当我查看任何子片段时,应隐藏底部导航 . 是否有任何使用导航组件的开箱即用方式或需要手动更改可见性?
您必须在MainActivity中创建一个方法以获得可见性 . 从要显示或隐藏的片段调用该方法 .
我遇到这种情况的一件事是,底部导航可见性没有被正确消除 . 所以我将底部导航视图放在相对布局中并隐藏该父视图 .
您可以使用NavController.OnNavigatedListener来实现此行为(在Activity onCreate中设置它):
findNavController(R.id.container).addOnNavigatedListener { _, destination -> when (destination.id) { R.id.dashboardFragment -> showBottomNavigation() else -> hideBottomNavigation() } } private fun hideBottomNavigation() { // bottom_navigation is BottomNavigationView with(bottom_navigation) { if (visibility == View.VISIBLE && alpha == 1f) { animate() .alpha(0f) .withEndAction { visibility = View.GONE } .duration = EXIT_DURATION } } } private fun showBottomNavigation() { // bottom_navigation is BottomNavigationView with(bottom_navigation) { visibility = View.VISIBLE animate() .alpha(1f) .duration = ENTER_DURATION } }
2 回答
您必须在MainActivity中创建一个方法以获得可见性 . 从要显示或隐藏的片段调用该方法 .
我遇到这种情况的一件事是,底部导航可见性没有被正确消除 . 所以我将底部导航视图放在相对布局中并隐藏该父视图 .
您可以使用NavController.OnNavigatedListener来实现此行为(在Activity onCreate中设置它):