要使 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的根布局增加个背景色就好了。
要在具体方法设置对应的全屏属性,不在对应方法设置 也会失效!
未设置去除对话框的背景有边距👇 设置去除对话框的背景无边距👇
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
,没有任何边距,完全覆盖整个屏幕。