Dialog优先级显示

先上代码、底部有效果图

可以根据自己的需求修改优先级
在show的时候传一个ID、为1的时候显示在所有Dialog上面、默认所有Dialog都降低了优先级,同等级的Dialog是根据创建的顺序显示的,不会有影响.


public class BaseDialogFragment extends DialogFragment {

    private int id;

    public BaseDialogFragment() {
    }

    public void show(@NonNull FragmentManager manager, @Nullable String tag, int id) {
        super.show(manager, tag);
        this.id = id;
    }

    @NonNull
    @Override
    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
        if (getContext() != null) {
            Dialog dialog = new Dialog(getContext(), getTheme());
            Window window = dialog.getWindow();
            if (window != null) {
                if (id == 1) {//默认展示--创建一个展示一个,显示在之前的Dialog上面
                    window.setType(WindowManager.LayoutParams.TYPE_APPLICATION);
                } else {//低优先级----显示在之前的Dialog下面
                    window.setType(WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG);
                }
            }
            return dialog;
        }
        return super.onCreateDialog(savedInstanceState);
    }
}

20200930112635211.gif

你可能感兴趣的:(Dialog优先级显示)