RecyclerView水平多次捕捉

时间:2016-11-24 17:23:54

标签: android android-recyclerview horizontal-scrolling

我有一个水平recyclerView,有28个元素。我想实现以下目标:一次只显示7个项目,如果用户向右滑动,则滚动到接下来的7个项目,如果向左滑动则相同,然后滚动到前7个项目。我尝试使用LinearSnapHelper之类的public class CustomSnapHelper extends LinearSnapHelper { @Override public int findTargetSnapPosition(RecyclerView.LayoutManager layoutManager, int velocityX, int velocityY) { View centerView = findSnapView(layoutManager); if (centerView == null) { return RecyclerView.NO_POSITION; } int position = layoutManager.getPosition(centerView); int targetPosition = -1; if (layoutManager.canScrollHorizontally()) { if (velocityX < 0) { targetPosition = position - 7; } else { targetPosition = position + 7; } } final int firstItem = 0; final int lastItem = layoutManager.getItemCount() - 1; targetPosition = Math.min(lastItem, Math.max(targetPosition, firstItem)); return targetPosition; } } 来解决它:

rw

但问题是

  1. 如果我拖动列表并滚动几个位置并释放它,那么它将不会返回到 原来的疯抢位置。
  2. 有时(基于速度)如果我 显示前7个项目时向右滑动,然后滚动 一个额外的空间,并扣到错误的位置和物品 显示从9-15。

0 个答案:

没有答案