让活动保持沉浸式模式

问题描述 投票:0回答:1

我在整个活动中保持沉浸式模式时遇到困难。

我有一个由各种片段组成的活动。在初始(主)片段中,启用了屏幕旋转。但是,在另一个片段中,屏幕旋转被禁用。创建活动后,开始片段将以沉浸式模式(全屏)显示。当转换到另一个片段时,活动保持沉浸模式。但是,导航回开始片段后,虽然导航栏不可见,但视图不会返回全屏。

在活动中,我有以下函数,当片段恢复(内部)时将调用该函数

活动:

fun setFullScreen() {
        this.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
        val windowInsetsController = WindowCompat.getInsetsController(window, window.decorView)
        windowInsetsController.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
        windowInsetsController.hide(WindowInsetsCompat.Type.systemBars())
    }

片段内部:

override fun onResume() {
        super.onResume()
        val activity = activity as MainActivity
        activity.setFullScreen()
        
    }

问题是,正如我上面所写,导航栏是隐藏的,但布局不适合。下图是返回start片段后的结果。是否可以调整布局大小,以便

BottomNavigationView
覆盖导航栏?

android android-activity fragment fullscreen
1个回答
0
投票

问题是,我在片段中使用了旧代码

 private fun hideNavigationBar() {
        val flags =
            (View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY)
        requireActivity().window!!.decorView.setSystemUiVisibility(flags)
    }

    private fun showNavigationBar() {
        requireActivity().window!!.decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR or View.SYSTEM_UI_FLAG_FULLSCREEN)
        requireActivity().window!!.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN)
    }

通过删除此代码,它可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.