如何限制垂直Recyclerview的滚动功能仅允许向下滚动?
我想以某种方式制作一个“没有回到顶部的名单”。
编辑:这不是重复。我不想禁用垂直滚动。我只是想禁用向上滚动。答案 0 :(得分:1)
我找到了一个使用OnItemTouchListener的解决方案。
滚动事件由3个MotionEvents组成:ACTION_DOWN
,ACTION_MOVE
和ACTION_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;
}
...