Android WebView中PointerEvent的clientX值异常偏移问题咨询
Android WebView触摸事件clientX偏移问题解答
- 这是Android WebView的已知系统限制,并非你的代码操作有误。
- 原因是Android系统默认开启了「边缘触摸保护」机制:为避免误触系统边缘手势(如返回、多任务切换),WebView会对靠近屏幕边缘的触摸事件坐标添加8-12px左右的偏移,你遇到的10px属于正常范围。该机制与
safe-area-inset无关——safe-area-inset针对的是刘海、状态栏等显示区域,而非触摸事件的坐标偏移。
解决方法
- 若你能控制WebView配置(比如自研App内嵌WebView),可通过以下代码关闭边缘触摸保护:
关闭后webView.getSettings().setEdgeTouchProtectionEnabled(false);clientX就能正常获取到屏幕左边缘的0px坐标。 - 若无法控制WebView配置(比如第三方App内嵌网页),可检测WebView环境后手动减去偏移量。注意偏移量可能随系统版本略有变化,建议以实际测试的稳定值(如你遇到的10px)为准,或通过动态计算屏幕可用宽度与触摸坐标范围的差值来适配。
内容的提问来源于stack exchange,提问作者Leo Jiang
相关产品推荐
相关产品推荐

