viewpager 嵌套 webview ,当webview内容过宽,左右滑动与viewpager冲突 ,解决方法,给webview加上touch消息监听
private final class WebViewOnTouchListener implements OnTouchListener{
int startX = 0;int startY = 0;
@Override
public boolean onTouch(View v, MotionEvent event) {
int xDistance = 0;
int yDistance = 0;
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
startX = (int) event.getRawX();
startY = (int) event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
xDistance = (int) (event.getRawX() - startX);
yDistance = (int) (event.getRawY() - startY);
Point outSize = new Point(); ///*****用这种方法可以得到屏幕的真实宽高
((Activity)context).getWindowManager().getDefaultDisplay().getRealSize(outSize);
int screenWidth = outSize.x;
int screenHeight = outSize.y;
int xStardar = screenWidth / 3;
int yStardar = screenHeight / 16;
if(Math.abs(xDistance) < xStardar){
holder.wv_table_content.getParent().getParent().getParent().requestDisallowInterceptTouchEvent(true); // viewpager不允许拦截touch消息
if(Math.abs(yDistance) > yStardar){
holder.wv_table_content.getParent().getParent().getParent().requestDisallowInterceptTouchEvent(false);
holder.wv_table_content.setHorizontalScrollBarEnabled(false);
}
}else{
holder.wv_table_content.getParent().getParent().getParent().requestDisallowInterceptTouchEvent(false);
holder.wv_table_content.setHorizontalScrollBarEnabled(false);
}
break;
case MotionEvent.ACTION_UP:
holder.wv_table_content.getParent().getParent().getParent().requestDisallowInterceptTouchEvent(false);
holder.wv_table_content.setHorizontalScrollBarEnabled(true);
break;
default:
break;
}
return false;
}
}