美文网首页
Android 调整Dialog或DialogFragment的

Android 调整Dialog或DialogFragment的

作者: 我啊翔1314 | 来源:发表于2020-04-11 18:26 被阅读0次

在使用Dialog或者DialogFragment时,难免需要调整Dialog的宽度,要实现该需求,需要做一下步骤:

(1)在Dialog中使用

在Dialog中使用,需要在Dialog初始化时,加入如下代码:

        ...
         // 隐藏标题栏, 不加弹窗上方会一个透明的标题栏占着空间
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

        // 必须设置这两个,才能设置宽度
        dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        dialog.getWindow().getDecorView().setBackgroundColor(Color.TRANSPARENT);

        // 遮罩层透明度
        dialog.getWindow().setDimAmount(0);

        // 设置宽度
        WindowManager.LayoutParams params = window.getAttributes();
        params.width = WindowManager.LayoutParams.MATCH_PARENT;
        params.height = WindowManager.LayoutParams.WRAP_CONTENT;
        params.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL;
        params.windowAnimations = R.style.bottomSheet_animation;
        dialog.getWindow().setAttributes(params);
       
        // 设置dialog布局内容,这里布局的初始化代码就不写出来了
        dialog.setContentView(view, layoutParams)
        dialog.show()

在DialogFragment中,则在onCreateView函数中,加入上述代码:


    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable           Bundle savedInstanceState) {
        ...
         // 隐藏标题栏, 不加弹窗上方会一个透明的标题栏占着空间
        getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);

       // 必须设置这两个,才能设置宽度
        getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        getDialog().getWindow().getDecorView().setBackgroundColor(Color.TRANSPARENT);

        // 遮罩层透明度
        getDialog().getWindow().setDimAmount(0);

        // 设置宽度
        WindowManager.LayoutParams params = window.getAttributes();
        params.width = WindowManager.LayoutParams.MATCH_PARENT;
        params.height = WindowManager.LayoutParams.WRAP_CONTENT;
        params.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL;
        params.windowAnimations = R.style.bottomSheet_animation;
        getDialog().getWindow().setAttributes(params);
        return view;
    }

注意必须设置Dialog的背景为透明,否则设置宽度的代码会无效

相关文章

网友评论

      本文标题:Android 调整Dialog或DialogFragment的

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