Я хочу прокрутить recylerview при нажатии на элемент, чтобы элемент находился в центре полностью видимым, а другие элементы были частично видны.(как показано на первом рисунке)
Я пытался сделать это с помощью прокрутки (броска), которая работает отлично, но когда я пытаюсь сделать это при нажатии на элемент, это не работает.(как показано на втором рисунке)
mSnapHelper = 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;
}
}
final int firstItem = 0;
final int lastItem = layoutManager.getItemCount() - 1;
targetPosition = Math.min(lastItem, Math.max(targetPosition, firstItem));
return targetPosition;
}
};
mImagesRecyclerView.setLayoutManager(mLayoutManager);
mSnapHelper.attachToRecyclerView(mImagesRecyclerView);
mImagesRecyclerView.addOnItemTouchListener(
new RecyclerItemClickListener(this, new RecyclerItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
Log.d("position", "" + position);
mImagesRecyclerView.scrollToPosition(position);
mImageAdapter.setSelected(position);
}
})
);
mImagesRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
int snapPosition = mLayoutManager.getPosition(mSnapHelper.findSnapView(mLayoutManager));
mImageAdapter.setSelected(snapPosition);
}
});