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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容