android dialog 内容全屏记录

237 阅读1分钟

第一段代码:这种写法 可以保证宽度充满全屏 但是顶部跟底部还是有状态栏 跟 导航栏区域没有填充

activity?.windowManager?.defaultDisplay?.getMetrics(dm)
dialog!!.window!!.setLayout(dm.widthPixels, dialog!!.window!!.attributes.height)
dialog!!.window!!.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))

第二段代码:

dialog?.window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT)

这种写法 四边都有留空 第一种 加 第二种 效果是只有顶部状态栏 留空

第三段代码

public static void hideNavigationBar(Window window) {
    int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_IMMERSIVE
            | View.SYSTEM_UI_FLAG_FULLSCREEN;
    window.getDecorView().setSystemUiVisibility(uiOptions);
}

第一种 加 第二种 加 第三种 就可以实现完全全屏

第四段代码 这个代码 理论上是跟第三段代码一样的 主要就是不同SystemUi的效果

public static void adjustFullScreen(Window window) {
    if (window == null) {
        return;
    }
    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);
    }
}