【发布时间】:2019-10-22 13:37:18
【问题描述】:
我想在沉浸式模式中显示一个 BottomSheetDialogFragment。最初,导航和状态栏会在显示对话框时显示,但我可以使用下面的代码对其进行排序。但是,当显示或关闭对话框时,导航栏会闪烁片刻。有没有一种方法可以完全沉浸式地显示 BottomSheetDialogFragment,而导航栏不会在显示和关闭时闪烁?
abstract class ImmersiveBottomSheetDialogFragment<T : ViewDataBinding> : BottomSheetDialogFragment() {
protected lateinit var binding: T
private val systemUiVisibility: Int = (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)
fun showImmersive(
fragmentManager: FragmentManager,
tag: String,
tapOutsideEnabled: Boolean = false
) {
show(fragmentManager, tag)
fragmentManager.executePendingTransactions()
dialog?.let { dialog ->
dialog.setCanceledOnTouchOutside(tapOutsideEnabled)
dialog.window?.let { window ->
window.decorView.systemUiVisibility = systemUiVisibility
window.clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE)
}
}
}
}
【问题讨论】:
标签: android bottom-sheet