在项目中我们经常会做在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);
}