kongzue / DialogX

💬 DialogX dialog box component library, easy to use, more customizable, more scalable, easy to achieve a variety of dialog boxes. DialogX对话框组件库,更加方便易用,可自定义程度更高,扩展性更强,轻松实现各种对话框、菜单和提示效果,更有Material You、iOS、MIUI等主题扩展可选
Apache License 2.0
2.08k stars 217 forks source link

【BUG反馈】 getWindow().setBackgroundDrawableResource在DialogX的对话框消失后失效 #379

Closed lsCoding666 closed 1 year ago

lsCoding666 commented 1 year ago

问题描述

先用这些代码设置AlertDialog

mSpinnerDialog.show();
        ScreenUtil.setFullScreen(mSpinnerDialog);
        mSpinnerDialog.getWindow().setLayout(parent.getWidth(), LinearLayout.LayoutParams.MATCH_PARENT);
        mSpinnerDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
        mSpinnerDialog.getWindow().setBackgroundDrawableResource(R.color.comit_gray2);
        Window window = mSpinnerDialog.getWindow();
        window.setGravity(Gravity.BOTTOM | Gravity.END); // window.setGravity(Gravity.BOTTOM);
        WindowManager.LayoutParams params = mSpinnerDialog.getWindow().getAttributes();
        mSpinnerDialog.getWindow().setAttributes(params);
        mSpinnerDialog.setView(layout, 0, 0, 0, 0);
        mSpinnerDialog.setHeaderView(spinnerHeaderView);

对话框显示,灰色背景 然后表单写完后提交,成功后弹出TipDialog 然后再执行上面的代码显示对话框就没有 灰色背景了 使用的是View和DialogFragment都会有问题

DialogX 版本

0.0.49beta16

设备信息

华为平板M6 android 10 红米手机也会有问题Android13

是否在 Demo 中能复现此问题?

未尝试

问题截图/视频

截屏/视频

错误日志

No response

kongzue commented 1 year ago

WaitDialog和TipDialog属于一次性提示的,本质是单例的,在关闭后会销毁对象避免内存泄漏,准确的说DialogX的每一个对话框都建议一次性使用,对于需要全局设置样式的情况请参阅wiki中关于全局设置相关的文档。

lsCoding666 commented 1 year ago

WaitDialog和TipDialog属于一次性提示的,本质是单例的,在关闭后会销毁对象避免内存泄漏,准确的说DialogX的每一个对话框都建议一次性使用,对于需要全局设置样式的情况请参阅wiki中关于全局设置相关的文档。

不是这个意思 感觉是DialogX显示再消失后改变了窗口的一些flag,导致自己自定义其他非DialogX的view时,自定义背景颜色失效了

kongzue commented 1 year ago

我这边暂时没有发现问题,目前也无法猜测会修改什么其他的flag,代码是开源的,您可以排查一下是哪部分存在问题

lsCoding666 commented 1 year ago

虽然我也没排查出哪里出了问题,但是这里有个解决方案 1、dialog layout的rootViewGroup设置原本你想设置的透明色 2、代码中

    dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
        dialog.getWindow().setBackgroundDrawableResource(R.color.transparent);
kongzue commented 1 year ago

目前还是没有排查到问题的原因,DialogX并未持有您的AlertDialog对象也不会对其进行任何代码操作,DialogX的本质是一个activity的前景view,它并不会改变其他组件的运行逻辑。 请排查一下您使用DialogX的模式,是默认的View模式还是Window模式亦或者是其他实验性模式?部分其他模式可能会有影响。

stale[bot] commented 1 year ago

长时间未收到回复暂时关闭了此问题,若有疑问请继续回复。此消息来自于自动化 Issues 处理 Bot,若问题严重或紧急你也可以通过反馈群联系到我:590498789