I want to use a RecyclerView
to emulate the behavior of a MultiViewPager
, in particular I'd like to have the selected item at the center of the screen, including the first and the last element.
As you can see in this image, the first item is centered and this would be my expected result.
What I did was to setup a RecyclerView
with an horizontal LinearLayoutManager
and a LinearSnapHelper
. The problem with this solution is that the first and the last item will never be horizontally centered as selection. Should I switch my code so that it uses a MultiViewPager
or is it possible to achieve a similar result taking advantage of a RecyclerView
?
You can implement this with an RecyclerView.ItemDecoration
in getItemOffsets()
, to offset the first and last item appropriately.
Retrieve any offsets for the given item. Each field of
outRect
specifies the number of pixels that the item view should be inset by, similar to padding or margin. The default implementation sets the bounds of outRect to 0 and returns.If you need to access Adapter for additional data, you can call
getChildAdapterPosition(View)
to get the adapter position of the View.
You might need to use the messured size of the item and the RecyclerView
as well. But these information is available to be used anyhow.