测试 SDK Version = 28
覆写Fragment的onStart()方法:
上面的方法可以成功设置Dialog为全屏,但是如果在全屏的Dialog顶部有View的情况下,在某些机型View会被状态栏遮住(比如三星S9),这时需要一些特殊的设置来处理,可以参考我的文章: 解决DialogFragment在全屏时View被状态栏遮住的问题
本文原始地址 ,如有更多疑问,请参考我的其它Android相关博客: 我的博客地址
Android中的Dialog适配刘海屏全屏显示:
Dialog mdialog =new Dialog(mActivity, R.style.MyDialog)
/**全屏展示UI不影响导航栏*/
Window window = mdialog.getWindow()
if (window !=null) {
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN)
window.getDecorView().setPadding(0, 0, 0, 0)
window.getDecorView().setBackgroundColor(Color.WHITE)
WindowManager.LayoutParams layoutParams = window.getAttributes()
layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT
layoutParams.height = WindowManager.LayoutParams.MATCH_PARENT
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
// 延伸显示区域到刘海
WindowManager.LayoutParams lp = window.getAttributes()
lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
window.setAttributes(lp)
// 设置页面全屏显示
final View decorView = window.getDecorView()
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE)
}
window.setAttributes(layoutParams)
}
//设置自定义dialog,做一些 *** 作
mdialog.setContentView(LayoutInflater.from(mActivity).inflate(R.layout.dialog_private_agreement, null))
//显示
if (!mdialog.isShowing()) {
mdialog.show()
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)