Android开发 - 设置DialogFragment全屏显示

Android开发 - 设置DialogFragment全屏显示,第1张

默认的DialogFragment并不是全屏,但有些需求需要我们将对话框设置为全屏(内容全屏),Android并没有提供直接的API,通过其它不同的方法设置全屏在不同的机型上总有一些诡异的问题,经过测试,下面的方法可以实现各个机型的全屏。

测试 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()

        }


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11158404.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存