要使 DialogFragment 实现真正的全屏显示,需要设置一些额外的窗口标志和属性。

1.重写onCreateDialog 方法

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
    val dialog = super.onCreateDialog(savedInstanceState)

    // 设置对话框样式为无标题
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE)
    dialog.window?.setFlags(
        WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN
    )

    return dialog
}

2.重写onStart 方法并设置全屏参数

override fun onStart() {
    super.onStart()
    
    // 设置对话框为全屏
    dialog?.window?.setLayout(
        ViewGroup.LayoutParams.MATCH_PARENT,
        ViewGroup.LayoutParams.MATCH_PARENT
    )
    
    // 去除对话框的背景
    dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
}

注意:一定要去除对话框的背景,不然会全屏不生效,去除背景后Dialog 会变成透明状态,给Dialog的根布局增加个背景色就好了。

要在具体方法设置对应的全屏属性,不在对应方法设置 也会失效!

    未设置去除对话框的背景有边距👇      设置去除对话框的背景无边距👇 

Android 将DialogFragment 设置为全屏显示_全屏Android 将DialogFragment 设置为全屏显示_全屏_02

3.在onViewCreated 中初始化视图

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    initView()
}
显示FullScreenDialogFragment
val dialogFragment = FullScreenDialogFragment()
dialogFragment.show(supportFragmentManager, "FullScreenDialogFragment")
总结
  • onCreateDialog:设置无标题并加上全屏标志。
  • onStart:设置对话框为全屏尺寸,并去除背景以确保没有边距。
  • onViewCreated:初始化视图,这里可以放置你的视图初始化逻辑。

这样就可以创建一个真正全屏的 DialogFragment,没有任何边距,完全覆盖整个屏幕。