使用NestedScrollView嵌套WebView遇到的坑

1,771 阅读1分钟

1.背景:接到一个需求,需要webView和顶部的其它内部一起进行滑动,当时想到的解决方案为使用NestedScrollView对WebView进行嵌套使用,之后就遇到一系列问题。

问题一:NesterScrollView和WebView一起使用导致webView滑动事件冲突,导致滑动卡顿和滑动无法使用。

问题二:解决完滑动冲突,遇到第二个问题,webView滑动到底部,底部一片空白。见下图

image.png

2.解决方案解决滑动冲突,直接在webView的onTouchEvent中对于滑动事件进行拦截 requestDisallowInterceptTouchEvent(true);使用这个意思就是我的事件自己处理,父View不要对此事件进行拦截处理。滑动冲突至此就解决了,但是又发现了另外一个问题就是上述问题二底部一片空白,我刚开始以为是h5页面问题,后面测试是自己的问题。第一想到是我本来是注入js代码 webView.setLayoutParams(new LinearLayout.LayoutParams(getResources().getDisplayMetrics().widthPixels, (int) (height getResources().getDisplayMetrics().density)));
webView.loadUrl("javascript:MyApp.resize(document.body.getBoundingClientRect().height)");。 后面发现另外一种修改方式也可以就没使用这种方法。直接在webView外部在嵌套一个LinearLayout。WebView的高度设置为wrap_content。完美解决了这个问题。

3.其实做这个需求还遇到一个问题使用NestedScrollView嵌套ViewPage导致viewPage内容无法展示。

image.png Google官方的不建议行为,后面修改了布局没使用这种方式布局。