最近项目中需要在首页实现轮播图+带下拉上拉的listview效果,所以Banner图必须写在listview第一项,就会出现下拉时鼠标在Banner图上不能刷新,在item为第2项及以下列表下拉就可以刷新的问题。
直接附解决办法:
重写ViewPager,处理触摸事件即dispatchTouchEvent方法,具体实现如下:
private float mDownX;
private float mDownY;
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
mDownX = ev.getX();
mDownY = ev.getY();
getParent().requestDisallowInterceptTouchEvent(true);
break;
case MotionEvent.ACTION_MOVE:
if (Math.abs(ev.getX() - mDownX) > Math.abs(ev.getY() - mDownY)) {
getParent().requestDisallowInterceptTouchEvent(true);
} else {
getParent().requestDisallowInterceptTouchEvent(false);
}
break;
case MotionEvent.ACTION_UP:
getParent().requestDisallowInterceptTouchEvent(false);
break;
case MotionEvent.ACTION_CANCEL:
getParent().requestDisallowInterceptTouchEvent(false);
break;
}
return super.dispatchTouchEvent(ev);
}