我正在尝试为水平RecyclerView实现类似viewpager的行为。来自适配器的数据应正常充气和绑定,但通过Recycler的导航应以不同的方式处理。当用户滑动(或尝试滚动)时,我将Recycler项向该方向移动,并将其粘贴到左侧。
我已经有了所有的项目转换逻辑。我正在使用一个自定义的LayoutManager,它用一个自定义的onSmoothScrollToPosition()覆盖LinearSmoothScroller(),这个自定义的RecyclerView将项目粘贴到左边。
问题是-我怎样才能覆盖LayoutManager的滚动行为来拦截并亲自处理这些刷卡操作?我试图禁用onTouchListener中的滚动,然后截取RecyclerView中的手势,但这似乎不起作用。框架是否有干净的方法来处理这个问题?

最佳答案

thispost中介绍的原生android解决方案是让recyclerview像viewpager一样工作的超级简单的方法。
相关位:
24.2.0版本的支持库引入了两个新类(snaphelper和linearsnaphelper),应用于处理recyclerview中的快照。

唯一需要的代码是:
SnapHelper snapHelper = new LinearSnapHelper();snapHelper.attachToRecyclerView(recyclerView);
SnapHelper snapHelper = new GravitySnapHelper(Gravity.START);snapHelper.attachToRecyclerView(startRecyclerView);

08-17 20:30