首页 文章

隐藏子屏幕/片段的android底部导航视图

提问于
浏览
3

我正在尝试创建单个活动Android应用程序 . 我有使用BottomNavigationView的MainActivity(仅活动),三个顶级片段和一些子片段 . 我的要求是每当屏幕显示顶级片段时,底部导航应该是可见的,以便可以进行切换 . 但是当我查看任何子片段时,应隐藏底部导航 . 是否有任何使用导航组件的开箱即用方式或需要手动更改可见性?

2 回答

  • 0

    您必须在MainActivity中创建一个方法以获得可见性 . 从要显示或隐藏的片段调用该方法 .

    我遇到这种情况的一件事是,底部导航可见性没有被正确消除 . 所以我将底部导航视图放在相对布局中并隐藏该父视图 .

  • 3

    您可以使用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
        }
    }
    

相关问题