美文网首页
Dialog默认无法全屏的原因

Dialog默认无法全屏的原因

作者: 醉流光 | 来源:发表于2020-11-20 15:43 被阅读0次

    参考链接:https://blog.csdn.net/sydMobile/article/details/83588708?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control

    记一次dialog覆盖在状态栏和导航栏上方的解决方案:

    private void setStatusBar(){
        //按空白处不能取消
        setCanceledOnTouchOutside(false);
        Window window = getWindow();
        window.setGravity(Gravity.CENTER);
        //设置window背景,默认的背景会有Padding值,不能全屏。当然不一定要是透明,你可以设置其他背景,替换默认的背景即可。
        window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    
        View decorView = window.getDecorView();
        //两个 flag 要结合使用,表示让应用的主体内容占用系统状态栏的空间
        decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        window.setStatusBarColor(Color.TRANSPARENT);
        //设置导航栏颜
        window.setNavigationBarColor(Color.TRANSPARENT);
        //内容扩展到导航栏
        window.setType(2026);
    }
    
    @Override
    public void show() {
        super.show();
        Window win = getWindow();
        // 设置全屏,要设置在show的后面
        WindowManager.LayoutParams layoutParams = win.getAttributes();
        layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
        layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT;
        win.setAttributes(layoutParams);
    }
    

    style.xml中(代码中和xml中有的重复设置了,目前先这样写,后续调整):
    <style name="FullscreenDialog" parent="android:style/Theme.Dialog">
    <item name="android:windowFrame">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:windowTranslucentNavigation">true</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
    <item name="android:fitsSystemWindows">true</item>
    </style>

    相关文章

      网友评论

          本文标题:Dialog默认无法全屏的原因

          本文链接:https://www.haomeiwen.com/subject/ucndiktx.html