下拉刷新SwipeRefreshLayout会和Webview的竖向滚动冲突,网上各种解决方法五花八门,有重写SwipeRefreshLayout的,有给Webview触摸加偏移的,但遇到固定页面有嵌套滚动就全阵亡了。一个偶然发现Webview也有OverScrolled方法,会在滚动超过处理范围时调用,既然知道什么时候过滚动,那问题就迎刃而解了。
重写WebView
按下的时候置false,在onOverScrolled更新状态:
1 | var overScrollY = false |
SwipeRefreshLayout监听
在SwipeRefreshLayout.setOnChildScrollUpCallback返回WebView.overScrollY:
1 | item_swipe.setOnChildScrollUpCallback { _, _ -> |
两步搞定,简直不能更简单,更进一步还能适配关联滚动。