Closed Xiaocai9527 closed 7 years ago
昨天您只是解决了部分问题,还是有滑动问题,比如viewpager的左右滑动和scrollview的上下滑动,recyclerView的问题貌似并没有解决,我今天测试了下发现要重写onInterceptTouchEvent方法。 `public boolean onInterceptTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: mFirstY = ev.getY(); mFirstX = ev.getX(); break; case MotionEvent.ACTION_MOVE: float mCurrentY = ev.getY(); float mCurrentX = ev.getX();
float detalX = mCurrentX - mFirstX; float detalY = mCurrentY - mFirstY; boolean isDown = mCurrentY > mFirstY;//下拉 boolean isUp = mCurrentY < mFirstY;//上滑 if (Math.abs(detalY) > Math.abs(detalX)) { //解决viewpager的左右滑动和scrollview的上下滑动的冲突 if (getScrollY() < maxMoveY) { //若头布局还有那么全部竖直滑动事件SC拦截 return true; } else { //若头布局已经隐藏 if (isDown) { //下拉 if (ViewUtil.isScrollToTop(scrollableView)) { //如果recyclerView滑到顶端了,那么SC拦截 return true; } else {//如果recyclerView没有滑到顶端,那么SC不拦截 return false; } } else {//上滑,头布局隐藏的情况下上滑,SC不拦截 return false; } } } case MotionEvent.ACTION_UP: break; } return super.onInterceptTouchEvent(ev); }`
已参考你的提议进行修改。
你可以fork,然后提交代码上来。
擦,咋上传代码啊,。 这个延迟加载在实际项目里可能会有点问题吧,搞个回调,在fragment的数据加载完毕再给viewpager设置高度。不过我不明白的是,为什么只需要给position=0的页面设置高度就可以了呢?按理说每一个页面的viewpager高度都不一样,都需要设置啊
昨天您只是解决了部分问题,还是有滑动问题,比如viewpager的左右滑动和scrollview的上下滑动,recyclerView的问题貌似并没有解决,我今天测试了下发现要重写onInterceptTouchEvent方法。 `public boolean onInterceptTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: mFirstY = ev.getY(); mFirstX = ev.getX(); break; case MotionEvent.ACTION_MOVE: float mCurrentY = ev.getY(); float mCurrentX = ev.getX();