razerdp / BasePopup

Android下打造通用便捷的PopupWindow弹窗库
https://github.com/razerdp/BasePopup
Apache License 2.0
5.2k stars 759 forks source link

在DialogFragment上弹窗,其蒙层的位置出现异常偏移。 #512

Open Suguiqiang opened 2 months ago

Suguiqiang commented 2 months ago

出现的问题是,蒙层的位置不正确,存在偏移。

screenshot1727677324606

查看代码后,发现问题出在WindowManagerProxy类的内部类BeforeApi30Impl,里面的这一行代码 p.flags |= LayoutParams.FLAG_LAYOUT_IN_SCREEN;

如果将这行代码注释,那么显示是正常的,尺寸会被限制在父窗口的尺寸范围,如下图: screenshot1727677366597

然后我在另一个Android 8的华为手机用这个flag,显示的蒙层却能铺满屏幕。

然后我在Api30Impl里面加上这行代码在其它平板却也能正常显示,例如,在三星的Galaxy Tab S6 Lite(Android13)上正常显示,其它平板也是正常显示,如下图: screenshot1727678363820

想问下大大是不是亚马逊这个平板的系统问题,还是这个flag不靠谱,有没有什么比较好的方式能适配这个亚马逊平板?

问题描述/重现步骤请写在这里 在Demo中->API列表->构造器页面,点击DialogFragment弹窗,出现的蒙层未能铺满屏幕。只是特定机型存在问题。