在项目中我们经常会做在listview的header添加viewpager来滚动播放(广告或者新闻等焦点图)的需求,由于viewpager的横向滑动和listview的纵向滑动会导致冲突 解决办法如下:
1,继承viewpager并且重写dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent这三个方法
2,通过set方法传入ViewPager 的parent(ViewGroup) 然后在返回super方法的之前加入如下代码: if (parent != null) { parent.requestDisallowInterceptTouchEvent(true); }
@Override public boolean dispatchTouchEvent(MotionEvent ev) { if (parent != null) { parent.requestDisallowInterceptTouchEvent(true); } return super.dispatchTouchEvent(ev); } @Override public boolean onInterceptTouchEvent(MotionEvent arg0) { if (parent != null) { parent.requestDisallowInterceptTouchEvent(true); } return super.onInterceptTouchEvent(arg0); } @Override public boolean onTouchEvent(MotionEvent arg0) { if (parent != null) { parent.requestDisallowInterceptTouchEvent(true); } return super.onTouchEvent(arg0); }