3

我有一个NestedScrollView(NSVchild),在一个水平RecyclerView内,在另一个NestedScrollView(NSVparent)内。NSVchild里面是一个TextView长文本。

我现在想知道的是,当 NSVchild 从顶部或底部滚动完成时,如何防止 NSVchild 滚动 NSVparent?

我尝试了什么:

当 NSVchild 为0 且用户在屏幕上向下拖动时,以及当 NSVchild 处于最大值且用户向上拖动时,我尝试扩展NestedScrollView和覆盖并返回 false。返回按预期工作,但问题是理解用户何时在屏幕上向上或向下拖动。这是代码:onTouchEventscrollscrollfalse

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意味着屏幕被向上拖动,deltaY > 0反之亦然。只要 NSVchild 有空间在其内部滚动,它就可以很好地工作。当它从一侧完成滚动并开始滚动 NSVparent 时,deltaY将在一帧中小于 0,在下一帧中,大于 0,这使我的代码无用。

还有其他方法可以实现我想要的吗?或者更好的方式来了解屏幕是否被向上或向下拖动?

4

0 回答 0