Android RecyclerView中类似寻呼机的行为

Android RecyclerView中类似寻呼机的行为,android,android-recyclerview,Android,Android Recyclerview,我正在尝试为水平RecyclerView实现类似ViewPager的行为。来自适配器的数据应正常膨胀和绑定,但通过回收器的导航应以不同方式处理。当用户滑动(或尝试滚动)时,我将回收器朝该方向移动一个项目,将其粘贴到左侧 我已经有了所有的项目转换逻辑。我使用的是一个自定义的LayoutManager,它用一个自定义的LinearSmoothScroller()覆盖onSmoothScrollToPosition(),使项目向左粘贴 问题是-我如何覆盖RecyclerView的滚动行为来拦截刷卡并自

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

我已经有了所有的项目转换逻辑。我使用的是一个自定义的
LayoutManager
,它用一个自定义的
LinearSmoothScroller()
覆盖
onSmoothScrollToPosition()
,使项目向左粘贴


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

将您的
RecyclerView
附加到
SnapHelper

有一个专门用于此的库

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

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

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

要了解更多信息和示例,请查看本文中介绍的本机Android解决方案是一种非常简单的方法,可以让RecyclerView表现得像一个ViewPager

相关位:

24.2.0版本的支持库引入了两个新类(SnapHelper和LinearSnapHelper),用于在RecyclerView中处理捕捉。 .... 唯一需要的代码是:

SnapHelper SnapHelper=newlinearsnaphelper();
snapHelper.attachToRecyclerView(recyclerView)

SnapHelper SnapHelper=新的GravitySnapHelper(Gravity.START);

snapHelper.attachToRecyclerView(startRecyclerView)

我认为在
onTouchListener
中截取手势应该已经起到了作用。那个解决方案有什么不起作用?因为某种原因,它不会拦截任何东西。我认为这可能是因为水平回收器位于较大页面的一个页面(应用程序各部分的片段页面)中,它只是将手势传递给最上面的页面:(@EpicPandaForce我设法使其工作,结果是我必须在SimpleGetStureListener中实现onScroll(),而不仅仅是onFling().然而,这也有一个问题-onScroll()方法将多次触发,导致回收器一次遍历所有项目。是否有处理此问题的模式?这将有何帮助?@Kelevandos使用自定义scrollview来检测YScroll。您是指用于回收视图的scrollview包装器?这可能行得通,但我希望有一种方法可以使用回收视图f以干净的方式处理此问题框架:-(你应该这样做,相信我,我已经做了研发,并想出了这个。工作顺利,没有任何问题这是可行的,但它迫使回收工作100%像寻呼机一样,意味着一次只能看到一个孩子。这不是我想要的:-(例如,如果要查看或滑动多个元素,可以使用另一个元素SnapperLinearLayoutManager@djodjo如何使其水平滚动?好的,我找到了新的ViewPagerLayoutManager(这个,LinearLayoutManager.HORIZONTAL,false);请在答案中包含链接页面的相关部分。仅链接的答案对用户不友好,如果链接消失,则将变得完全无用!PagerSnapHelper是另一个扩展SnapHelper的可用类。如果您想要类似分页的行为,它可以很好地工作。如果您想放弃搜索并自己对其进行统计编码,那么我找到你的评论。