を使用してLinearSnapHelper
、「スナップ」内のアイテムをRecyclerView
画面上の所定の位置に配置しています(カードが画面の大部分を占めるため、スワイプ/フリング/スクロールのたびに所定の位置にスナップして画面を埋めたいと思います)。
カードを素早く所定の位置にはめ込む方法に苦労しています。カスタムの作成(およびまたはでメソッドのLinearLayoutManager
編集)、およびカスタムの作成(および fling メソッドの編集)を試みました。しかし、カードが所定の位置に「スナップ」する速度には何の影響もありません。calculateSpeedPerPixel
scrollToPosition
smoothScrollToPosition
RecyclerView
LinearSnapHelper
問題は、カードを所定の位置に「スクロール」する方法がよくわからないことだと思います。やメソッドを使用していないようですLinearLayoutManager
。scrollToPosition
smoothScrollToPosition
snapHelper = new 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 - 1;
} else {
targetPosition = position + 1;
}
}
if (layoutManager.canScrollVertically()) {
if (velocityY > 0) {
targetPosition = position + 1;
} else {
targetPosition = position - 1;
}
}
final int firstItem = 0;
final int lastItem = layoutManager.getItemCount() - 1;
targetPosition = Math.min(lastItem, Math.max(targetPosition, firstItem));
return targetPosition;
}
};
snapHelper.attachToRecyclerView(mRecyclerView);