以沉浸式模式显示BottomSheetDialogFragment

时间:2019-06-07 03:39:27

标签: android bottom-sheet

我想以沉浸式模式显示BottomSheetDialogFragment。最初,在显示对话框时会显示导航栏和状态栏,但是我可以使用下面的代码对它进行排序。但是,显示或关闭对话框时,导航栏会闪烁一秒钟。有没有一种方法可以让我完全显示BottomSheetDialogFragment的身临其境的感觉,而导航栏不会在显示和关闭时闪烁?

INSERT

1 个答案:

答案 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和窗口插图的信息。