先上代码、底部有效果图
可以根据自己的需求修改优先级
在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);
}
}