在写自定义轮播图时,触摸viewpager时停止轮播,抬起时开始轮播,结果发现viewpager的触摸无效果:
ViewPager劫取了这次触摸手势,并给它的子控件的发送了ACTION_CANCEL事件。
解决方法是重写viewpager:
public class CanDownViewPager extends ViewPager { public CanDownViewPager(Context context) { super(context); } public CanDownViewPager(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean dispatchTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: if (listener != null) { listener.onTouchDown(); } break; case MotionEvent.ACTION_UP: if (listener != null) { listener.onTouchUp(); } break; default: break; } return super.dispatchTouchEvent(ev); } private OnViewPagerTouchEvent listener; public void setOnViewPagerTouchEventListener(OnViewPagerTouchEvent l){ listener = l; } public interface OnViewPagerTouchEvent{ void onTouchDown(); void onTouchUp(); } }