我正在使用带有水平 LinearLayoutManager 的 RecyclerView。
recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL,false));
为了使适配器项目在中心捕捉,我已将 LinearSnapHelper 附加到 recyclerview。
SnapHelper 助手 = new LinearSnapHelper();
helper.attachToRecyclerView(recyclerView);
现在,我有两种情况,我希望一个项目居中
- 当我的活动启动时,它应该启动时将特定项目对齐到中心。
- 在回收视图中点击一个项目时,它应该居中。为此,我重写了适配器的 ViewHolder 中的 OnClick 方法。
对于这两种情况,我都在使用
recyclerView.smoothScrollToPosition(位置);
并且项目居中。然而,这发生在一个有弹性的动画中,首先发生一点额外的滚动并发布项目反弹回来。
如何禁用这个有弹性的动画以获得平滑滚动?
我尝试过的东西 - 在 API 下使用,而不是 smoothScrollToPosition
- LinearLayoutManager.scrollToPosition()
- LinearLayoutManager.scrollToPositionWithOffset()
上述两个 API 都没有提供平滑的滚动,而且项目没有正确居中(因为在 API 调用期间很难确定尚未创建/回收的项目的正确偏移值)
我在 RecyclerView 的文档中找不到任何禁用/覆盖动画的方法。有人可以帮忙吗..