我正在尝试为水平RecyclerView实现类似ViewPager的行为.来自适配器的数据应该正常膨胀和绑定,但是应该以不同方式处理通过Recycler的导航.当用户滑动(或尝试滚动)时,我向该方向移动Recycler一个项目,将其粘贴到左侧.
我已经拥有了所有项目转换逻辑.我正在使用自定义LayoutManager,它使用自定义LinearSmoothScroller()覆盖onSmoothScrollToPosition(),该项自动向左粘贴.
问题是 – 如何覆盖RecyclerView的滚动行为来拦截滑动并自己处理它们?我尝试在LayoutManager中禁用滚动,然后在onTouchListener中拦截手势,但这似乎不起作用. RecyclerView框架有一个干净的方法来处理这个问题吗?
解决方法
this帖子中介绍的原生Android解决方案是让RecyclerView像ViewPager一样运行的超级简便方法.
相关位:
The 24.2.0 version of the support library introduced two new classes (SnapHelper and LinearSnapHelper) that should be used to handle snapping in a RecyclerView.
….
The only code needed is:
SnapHelper snapHelper = new LinearSnapHelper();
snapHelper.attachToRecyclerView(recyclerView);
SnapHelper snapHelper = new GravitySnapHelper(Gravity.START);snapHelper.attachToRecyclerView(startRecyclerView);