我想以沉浸式模式显示BottomSheetDialogFragment。最初,在显示对话框时会显示导航栏和状态栏,但是我可以使用下面的代码对它进行排序。但是,显示或关闭对话框时,导航栏会闪烁一秒钟。有没有一种方法可以让我完全显示BottomSheetDialogFragment的身临其境的感觉,而导航栏不会在显示和关闭时闪烁?
INSERT
答案 0 :(得分:0)
添加此内容:
override fun setupDialog(dialog: Dialog?, style: Int) {
super.setupDialog(dialog, style)
dialog?.window?.setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE)
}
(from)
也添加此内容:
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
var viewParent = view
while (viewParent is View) {
viewParent.fitsSystemWindows = false
viewParent.setOnApplyWindowInsetsListener { _, insets -> insets }
viewParent = viewParent.parent as View?
}
}
这是做什么的? DialogFragment#onActivityCreated()
调用Dialog#setContentView()
,将对话框的视图包装在私有的“ wrapInBottomSheet”中。为了设置这些包装视图的适当标志,我们想在包装标志后 设置标志,例如在super.onActivityCreated()
还请注意this talk,以获取有关fitsSystemWindows
和窗口插图的信息。