RecyclerView中类似寻呼机的行为

时间:2016-03-31 09:18:41

标签: android android-recyclerview

我正在尝试为水平RecyclerView实现类似ViewPager的行为。来自适配器的数据应该正常膨胀和绑定,但是Recycler的导航应该以不同方式处理。当用户滑动(或尝试滚动)时,我向该方向移动Recycler一个项目,将其粘贴到左侧。

我已经拥有了所有项目转换逻辑。我使用的是自定义LayoutManager,它会使用自定义onSmoothScrollToPosition()覆盖LinearSmoothScroller(),该项会将项目保持在左侧。

问题是 - 如何覆盖RecyclerView的滚动行为来拦截滑动并自行处理?我尝试在LayoutManager中禁用滚动,然后在onTouchListener中拦截手势,但这似乎不起作用。 RecyclerView框架是否有一个干净的方法来处理这个问题?

3 个答案:

答案 0 :(得分:16)

this帖子中介绍的原生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);

答案 1 :(得分:2)

完全有一个库layoutmanagers

您需要的是ViewPagerLayoutManager。它基于您已有的相同想法,但更多扩展并处理多个案例。它基本上滚动,直到页面和页面发生变化。然后状态接管并调整到正确的页面。

要使用它,您只需将其设置为普通的布局管理器:

recyclerView.setLayoutManager(new ViewPagerLayoutManager(getActivity()));

了解更多信息和示例,请查看here

答案 2 :(得分:1)

RecyclerView附加到SnapHelper

Official Doc

Library