-
Notifications
You must be signed in to change notification settings - Fork 159
Open
Description
调试查了几小时发现出问题在这个地方
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
downX = ev.getX();
downY = ev.getY();
//如果滑动到了最底部,就允许继续向上滑动加载下一页,否者不允许
getParent().requestDisallowInterceptTouchEvent(true);
break;
case MotionEvent.ACTION_MOVE:
float dx = ev.getX() - downX;
float dy = ev.getY() - downY;
boolean allowParentTouchEvent;
if (Math.abs(dy) > Math.abs(dx)) {
if (dy > 0) {
//位于顶部时下拉,让父View消费事件
allowParentTouchEvent = isTop();
} else {
//位于底部时上拉,让父View消费事件
allowParentTouchEvent = isBottom();
}
} else {
//水平方向滑动
allowParentTouchEvent = false; // 这里原来为true,我看代码也知道基本就不应该执行,但还是很空间触发,暂时就这样解决
}
getParent().requestDisallowInterceptTouchEvent(!allowParentTouchEvent);
}
return super.dispatchTouchEvent(ev);
}我试了 if (Math.abs(dy) > Math.abs(dx) * 0.01) 这样一个因子,也可以。有更好的解决办法吗?
我试这个因为我在scrollview里还嵌套了一个expandableListview,很是麻烦。
Metadata
Metadata
Assignees
Labels
No labels