问题现象
应用切换到平板悬浮窗模式下时,拖动应用窗口在平板窗口上的位置后,点击按钮弹出弹窗,弹窗位置也随之改变。
背景知识
- position:定位,确定子组件相对父组件内容区的位置。父组件内容区的大小为父组件大小减去border、padding、safeAreaPadding提供给子组件可布局的内容区域大小。
- offset:相对偏移,组件相对原本的布局位置进行偏移。
- ClickEvent:点击事件的回调函数。其中windowX参数表示点击位置相对于应用窗口左上角的X坐标;displayX参数表示点击位置相对于应用屏幕左上角的X坐标。
问题定位
- 检查代码中是否使用position或者offset对弹窗组件进行位置偏移设置。
- 检查偏移量设置值是否使用了点击事件中相对于应用屏幕左上角的X坐标displayX,使用该值进行组件偏移时,会导致在悬浮窗模式下displayX值一直在变化,从而出现弹窗位置也一直变化的现象。
分析结论
应用对弹窗组件使用了offset设置了相对偏移,设置值是通过click事件回调函数中获取到的相对于应用屏幕左上角的X坐标displayX。应用切换到悬浮窗模式后,在设备屏幕上移动后displayX的值也随之变化,导致应用内弹窗位置一直变化。
修改建议
使用click点击事件的回调中的相对于应用窗口左上角的X坐标windowX作为弹窗显示的偏移量。