[Blankj/AndroidUtilCode]ToastUtils显示在dialog后面

2024-07-15 548 views
2

还是会出现被dialog遮挡的问题。 步骤:先弹出了dialog,再显示Toast。 版本:1.30.5

773

回答

1

我和你一样的问题,dialog挡住toast 使用 Toast.makeText 不会被dialog挡住。以前用的1.18.6 版本的AUC也不会被挡住。 @Blankj

4

同样遇到了这个情况,弹出虚拟键盘也会挡住ToastUtils。但是系统的Toast.makeText 不会被挡住。 @Blankj

3
private static IToast newToast(ToastUtils toastUtils) {
        if (!toastUtils.isNotUseSystemToast) {
            if (NotificationManagerCompat.from(Utils.getApp()).areNotificationsEnabled()) {
                if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
                    return new SystemToast(toastUtils);
                }
                if (!UtilsBridge.isGrantedDrawOverlays()) {
                    return new SystemToast(toastUtils);
                }
            }
        }

        // not use system or notification disable
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) {
            return new WindowManagerToast(toastUtils, WindowManager.LayoutParams.TYPE_TOAST);
        } else if (UtilsBridge.isGrantedDrawOverlays()) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                new WindowManagerToast(toastUtils, WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
            } else {
                new WindowManagerToast(toastUtils, WindowManager.LayoutParams.TYPE_PHONE);
            }
        }
        return new ActivityToast(toastUtils);
    }

这段代码是ToastUtils中的478--501行,其中存在一些问题,如果toastUtils.isNotUseSystemToast = false,就表明我要使用系统自带的Toast显示,却要受应用上层显示权限是否开启的限制; 还有495和497行只是new了而没有return; 被dialog遮挡是因为返回的是ActivityToast,而这个toast是添加到Activity所在Window的DecorView里面的; 请作者修改下这些问题吧。 @Blankj

6

遇到同样的问题

2

遇到同样的问题.

9

1.30.6 版本已修复