Android - RecyclerView - 如何暂时阻止滚动?

时间:2015-06-10 22:25:39

标签: android scroll android-recyclerview cancellation

我有一个我希望冻结的RecyclerView(即,不允许用户滚动,但仍然能够点击任何当前可见的视图),直到满足某个条件。我如何实现这一目标?

我尝试设置OnScrollListener如下:

@Override
public void onScrolled(final RecyclerView recyclerView, final int dx, final int dy) {

     super.onScrolled(recyclerView, dx, dy);

     if(myCondition){
         recyclerView.stopScroll();
     }
});

没有成功。

1 个答案:

答案 0 :(得分:1)

我已经弄明白了。应该使用OnItemTouchListener代替:

onItemTouchListener = new OnItemTouchListener() {

      @Override
      public boolean onInterceptTouchEvent(final RecyclerView recyclerView, final MotionEvent e) {

          if(myCondition){

              switch(e.getAction()){

                  case MotionEvent.ACTION_MOVE: return true;
              }
          }

          return false;
      }

      @Override
      public void onTouchEvent(final RecyclerView recyclerView, final MotionEvent e) {
      }
};

现在将其添加到RecyclerView:

yourRecyclerView.addOnItemTouchListener(onItemTouchListener);

如果有人找到更简单的方法,请告诉我!