Vertical Recyclerview仅允许向下滚动但阻止向上滚动

时间:2017-05-04 13:06:39

标签: android android-recyclerview

如何限制垂直Recyclerview的滚动功能仅允许向下滚动?

我想以某种方式制作一个“没有回到顶部的名单”。

编辑:这不是重复。我不想禁用垂直滚动。我只是想禁用向上滚动。

1 个答案:

答案 0 :(得分:1)

我找到了一个使用OnItemTouchListener的解决方案。

滚动事件由3个MotionEvents组成:ACTION_DOWNACTION_MOVEACTION_UP

因此,在ACTION_DOWN上,我们得到光标的垂直位置(Y),而ACTION_MOVE我们将新位置与旧位置进行比较。

通过返回true,onInterceptTouchEvent()方法确保我们拦截滚动事件。

float lastY;

recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
    @Override
    public boolean onInterceptTouchEvent(RecyclerView recyclerView, MotionEvent event) {
        int action = event.getAction();
        if(action == MotionEvent.ACTION_DOWN) {
            lastY = event.getY();
        }
        if (action == MotionEvent.ACTION_MOVE && event.getY() > lastY) {
            return true;
        }
        return false;
    }
    ...