方案一: 子 Viewpager 父 SwiperRefreshLayout
//解决SwiperRefresh 与 Viewpager的冲突 mViewpager.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { int touthevent = event.getAction(); switch (event.getAction()){ case MotionEvent.ACTION_DOWN: preX = event.getX(); case MotionEvent.ACTION_MOVE: mSwipeRefreshlayout.setEnabled(false); //mViewpager.requestDisallowInterceptTouchEvent(true); //优化左右滑动更换 if(Math.abs(event.getX() - preX)> 1 ) { return false; } else { preX = event.getX(); } break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: mSwipeRefreshlayout.setEnabled(true); // mViewpager.requestDisallowInterceptTouchEvent(false); //优化左右滑动更换 if(Math.abs(event.getX() - preX)> 2 ) { return false; } else { preX = event.getX(); } break; } return false; } });方案2:将自定义子View 继承于 View 然后
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
super.onInterceptTouchEvent(ev));
return true;
}
原理:
http://www.cnblogs.com/-OYK/archive/2012/02/06/2340467.html
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2013/0803/1500.html