您的位置:首页 > 其它

处理ViewPager嵌套ViewPager的滑动事件冲突

2017-06-15 13:41 381 查看
 开发时遇到一个问题:使用ViewPager+Fragment实现滑动tab切换,在其中某一个Fragment中嵌套一个ViewPager轮播卡片。测试发现轮播卡片不能进行左右滑动了。

  看了不少博文,都是通过覆盖onInterceptTouchEvent等方法拦截事件处理,例如:

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
mPager.requestDisallowInterceptTouchEvent(true);
return super.dispatchTouchEvent(ev);
}

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
mPager.requestDisallowInterceptTouchEvent(true);
return super.onInterceptTouchEvent(ev);
}

@Override
public boolean onTouchEvent(MotionEvent event) {
mPager.requestDisallowInterceptTouchEvent(true);
return super.onTouchEvent(event);
}


 

 

  在stackoverflow上找到这个方法,简洁完美地解决了我的问题。外层ViewPager复写canScroll方法,这种处理同样适用于ScrollView等其他滑动控件。

@Override
protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) {
if (v != this && v instanceof ViewPager) {
return true;
}
return super.canScroll(v, checkV, dx, x, y);
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: