我有NestedScrollView
(NSVchild),在水平RecyclerView
内,在另一个NestedScrollView
(NSVparent)内。 NSVchild内部是一个带有长文本的TextView
。
我现在想知道的是,当NSVchild从顶部或底部完成滚动时,如何防止NSVchild滚动NSVparent?
我尝试扩展NestedScrollView
并覆盖onTouchEvent
,并在NSVchild处于scroll
0并且用户在屏幕上向下拖动时返回false,并且当NSVchild处于最大值{{ {1}}用户正在向上拖动。返回scroll
按预期工作,但问题是当用户在屏幕上向上或向下拖动时理解。这是代码:
false
在这种方法中,float deltaY = 0;
float oldY = 0;
@Override
public boolean onTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_MOVE:
float y = ev.getY();
deltaY = y - oldY;
oldY = y;
Log.i("deltaY", deltaY+"");
break;
}
[...]
return super.onTouchEvent(ev);
}
表示屏幕向上拖动,deltaY < 0
表示反之亦然。只要有NSVchild可以在其内部滚动的空间,它就可以正常工作。当它从一侧完成滚动并开始滚动NSVparent时,deltaY > 0
将在一帧中变得小于0,而在下一帧中变得大于0,这使得我的代码无用。
还有其他方法可以达到我的目的吗?或者更好的方法来了解屏幕是否被向上或向下拖动?