当使用ViewPager来水平切换多个WebView控件,且WebView展示的网页中恰巧也存在水平滚动的page信息,则会出现一个常见的尴尬现象:ViewPager的水平滑动事件与网页中的水平滚动Page冲突啦~~~
这可如何是好呢,在广大热心网友的分享中,发现一妙解-重写WebView的触摸事件:
webview.setOnTouchListener(new View.OnTouchListener() {//viewpager与webview滑 动冲突问题
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
int point = (int) event.getX();
if (point > 0 && point < 50 || point > dm.widthPixels - 50 && point < dm.widthPixels) {
content.requestDisallowInterceptTouchEvent(false);
} else {
content.requestDisallowInterceptTouchEvent(true);
}
break;
}
return false;
}
});
dm为DisplayMetrics实例,初始化方法为:
private DisplayMetrics dm = new DisplayMetrics();
private WindowManager manager = (WindowManager)getActivity().getSystemService(Context.WINDOW_SERVICE);
manager.getDefaultDisplay().getMetrics(dm);
这里处理的方式就是判断当前触摸事件是否是边缘触摸,如果为边缘触摸(我设置的是屏幕两边的50像素范围内为边缘触摸),则webview不处理此事件,这样ViewPager就能正常操作啦啦啦~~~