这是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;即可,如下图所示:
然后将布局文件中的android.support.v4.widget.NestedScrollView替换为自己的NestedScrollView