Open ysmintor opened 8 years ago
调试查了几小时发现出问题在这个地方
@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,很是麻烦。
if (Math.abs(dy) > Math.abs(dx) * 0.01)
调试查了几小时发现出问题在这个地方
我试了
if (Math.abs(dy) > Math.abs(dx) * 0.01)
这样一个因子,也可以。有更好的解决办法吗? 我试这个因为我在scrollview里还嵌套了一个expandableListview,很是麻烦。