NestedScrollView的bug处理,子view首次点击无效

这是NestedScrollView的一个bug,问题在于,mIsBeingDragged = !mScroller.isFinished();这句代码在onintercepttouchevent(事件拦截方法中)通过调试可以发现,当停止滑动之后点击子View时 !mScroller.isFinished()=false,所以mIsBeingDragged=true 会把事件拦截,子view无法接收到事件,因此无法响应

这个bug已经有一段时间了,但是还没有被修复。所以我们创建自己的NestedScrollView修复来解决这个问题。将NestedScrollView的代码全部复制一份出来,做如下修改即可

找到onInterceptTouchEvent的MotionEvent.ACTION_DOWN:

将mIsBeingDragged = !mScroller.isFinished();注释掉,下面加上一句mIsBeingDragged = false;即可,如下图所示:

NestedScrollView的bug处理,子view首次点击无效

然后将布局文件中的android.support.v4.widget.NestedScrollView替换为自己的NestedScrollView