我在整个活动中保持沉浸式模式时遇到困难。
我有一个由各种片段组成的活动。在初始(主)片段中,启用了屏幕旋转。但是,在另一个片段中,屏幕旋转被禁用。创建活动后,开始片段将以沉浸式模式(全屏)显示。当转换到另一个片段时,活动保持沉浸模式。但是,导航回开始片段后,虽然导航栏不可见,但视图不会返回全屏。
在活动中,我有以下函数,当片段恢复(内部)时将调用该函数
活动:
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
覆盖导航栏?
问题是,我在片段中使用了旧代码
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)
}
通过删除此代码,它可以正常工作。