public class ChildViewPager extends ViewPager{
private float downX;
public ChildViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ChildViewPager(Context context) {
super(context);
}
/**
* 内部拦截法
*/
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
int curPosition;
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
getParent().requestDisallowInterceptTouchEvent(true);
downX = ev.getX();
break;
case MotionEvent.ACTION_MOVE:
curPosition = getCurrentItem();
int count = getAdapter().getCount();
if(curPosition == count - 1 && (ev.getX() - downX) < 0){//最后一页,并且向左滑动
getParent().requestDisallowInterceptTouchEvent(false);
}else if(curPosition == 0 && (ev.getX() - downX) > 0){//第一页,并且向右滑动
getParent().requestDisallowInterceptTouchEvent(false);
}else{
getParent().requestDisallowInterceptTouchEvent(true);
}
break;
}
return super.dispatchTouchEvent(ev);
}
}源码下载地址:http://download.youkuaiyun.com/download/android_tcp/9964479
viewpager嵌套viewpager滑动处理
最新推荐文章于 2022-10-01 07:43:08 发布
本文介绍了一种自定义Android ViewPager的方法,通过重写dispatchTouchEvent方法实现对滑动方向的智能拦截,确保了用户在浏览最后一页或第一页时不会误触发外部父布局的滚动行为。
9113

被折叠的 条评论
为什么被折叠?



