DialogFragment的宽度设置问题

DialogFragment的宽度设置

@Override
    public void onStart() {
        super.onStart();
        Window window = Objects.requireNonNull(getDialog()).getWindow();
        WindowManager.LayoutParams params = Objects.requireNonNull(window).getAttributes();
        params.gravity = Gravity.TOP;
        WindowManager wm1 = getActivity().getWindowManager();
        int width1 = wm1.getDefaultDisplay().getWidth();
        params.width = width1;
        params.x = 0;
        params.y = 78;
        window.setAttributes(params);
}

这样,这个对话框的宽度并没有达到屏幕宽度,而是左右都留了一点。为啥?我不是已经设置宽度为getDefaultDisplay().getWidth()了吗?

函数最后,再加上如下3行

         View decorView = window.getDecorView();
        decorView.setPadding(0, 0, 0, 0);
        decorView.setBackground(new ColorDrawable(Color.TRANSPARENT));

则对话框宽度可以达到屏幕宽度了,这是为啥呢?

并且如果将decorView.setBackground(new ColorDrawable(Color.TRANSPARENT)); 改为 decorView.setBackgroundColor(Color.RED);对话框周边出现了黑色部分,这又是为啥呢?

将当前Activity的DecorView的padding设置为0,将背景设置为透明色。
DecorView是Activity的根视图,包含了整个窗口的内容,包括标题栏、状态栏、内容区域等。
通过设置padding为0,可以让内容区域占满整个窗口。

这是一个屏幕比例的问题,分辨率都不一样的

fragment.setStyle 搜索一下

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632