代码之家  ›  专栏  ›  技术社区  ›  Shadow

取消RecyclerView垂直翻转/滑动

  •  1
  • Shadow  · 技术社区  · 6 年前

    我当前正在检测特定视图何时对用户可见或消失并停止 RecyclerView 在该视图位置滚动。到目前为止,我已经能够在 OnScrollListener RecyclerView.stopScroll RecyclerView.scrollTo 但现在唯一的问题是,如果用户抛出列表,它将越过该视图位置,因为调用滚动到位置后,抛出仍在“执行”,导致列表超出项目位置。

    如何以编程方式结束用户抛出操作?有点像 recyclerView.fling(0) 存在?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Shadow    6 年前

    我最后用了 LinearLayoutManager.scrollToPositionWithOffset 以目标的位置和0作为调用后的偏移量 RecyclerView.stopScroll .

    到目前为止,当同时使用这两个列表时,抛出行为不再导致列表滚动超出预期位置。

        2
  •  0
  •   Rohit Sharma    6 年前
     public class CustomLayoutManager extends LinearLayoutManager {
     private boolean isScrollEnabled = true;
    
     public CustomLayoutManager (Context context) {
      super(context);
     }
    
     public void setScrollEnabled(boolean flag) {
      this.isScrollEnabled = flag;
     }
    
     @Override
     public boolean canScrollVertically() {
      //Similarly you can customize "canScrollHorizontally()" for managing horizontal scroll
      return isScrollEnabled && super.canScrollVertically();
     }
    }
    

    将此设置为RecyclerView布局管理器,并使用LayoutManager对象使用setScrollEnabled(true/false)切换滚动

    假设您的RecyclerView RV

     CustomLayoutManager lm=new CustomLayoutManager(context of your activity);
     rv.setLayoutManager(lm);
     lm.setScrollEnabled(true/false);