使用SnapHelper对RecyclerView产生不必要的反弹效果

时间:2017-09-17 11:11:17

标签: android android-recyclerview linearlayoutmanager

我正在使用带有Horizo​​ntal LinearLayoutManager的RecyclerView。

  

recyclerView.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false));

要使适配器项目在中心对齐,我已将LinearSnapHelper附加到recyclerview。

  

SnapHelper helper = new LinearSnapHelper();

     

helper.attachToRecyclerView(recyclerView);

现在,我有两个场景,我希望一个项目来到中心

  1. 当我的活动启动时,应该将特定项目捕捉到中心启动。
  2. 点击recyclerview中的项目时,它应该居中。为此,我在适配器的ViewHolder中重写了OnClick方法。
  3. 对于这两种情况,我都在使用

      

    recyclerView.smoothScrollToPosition(位置);

    并且项目居中。然而,这会发生在有弹性动画的情况下,首先会发生一些额外的滚动并发布项目反弹。

    如何禁用此弹性动画以获得平滑滚动?

    我尝试过的事情 - 在API下面使用,代替smoothScrollToPosition

    1. LinearLayoutManager.scrollToPosition()
    2. LinearLayoutManager.scrollToPositionWithOffset()
    3. 以上两种API都不能提供平滑的滚动,而且该项目没有正确居中(因为很难找到尚未创建的项目的正确偏移值/在API调用期间回收)

      我无法在RecyclerView的文档中找到任何禁用/覆盖动画的方法。请有人帮忙..

1 个答案:

答案 0 :(得分:1)

解决方案是使用扩展的LinearLayoutManager:

--system-site-packages