Bug系列:SwipeRefreshLayout嵌套ViewPa
2020-08-11 本文已影响0人
Antonylr
解决方案参考如下:
https://www.jianshu.com/p/75d29ba99271
private void startDragging(float y) {
final float yDiff = y - mInitialDownY;
if (yDiff > mTouchSlop && !mIsBeingDragged) {
mInitialMotionY = mInitialDownY + mTouchSlop;
mIsBeingDragged = true;
mProgress.setAlpha(STARTING_PROGRESS_ALPHA);
}
}
在startDragging方法中,如果滑动位移y坐标大于TouchSlop(通过getScaleTouchSlop()方法返回一个滑动距离),那就将mIsBeingDragged[是否拖动]设为true,所以罪魁祸首正是在此,因为我们滑动ViewPager的时候,无法保证完全水平的滑动,所以会引起ViewPager与SwipeRefreshLayout的滑动事件冲突,最终导致无法滑动ViewPager.