Item OffsetDecoration
Item OffsetDecoration for GridLayoutManager in RecycleView.Following example will help to give equal space to an item in GridLayout.
|
Item OffsetDecoration for GridLayoutManager in RecycleView.Following example will help to
give equal space to an item in GridLayout.
ItemOffsetDecoration.java
public class ItemOffsetDecoration extends
RecyclerView.ItemDecoration {
private int mItemOffset; private int spanCount = 2; public ItemOffsetDecoration(int itemOffset) { mItemOffset = itemOffset; } public ItemOffsetDecoration(@NonNull Context context, @DimenRes int itemOffsetId) { this(context.getResources().getDimensionPixelSize(itemOffsetId)); } @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { super.getItemOffsets(outRect, view, parent, state); int position = parent.getChildLayoutPosition(view); GridLayoutManager manager = (GridLayoutManager) parent.getLayoutManager(); if (position < manager.getSpanCount()) outRect.top = mItemOffset; if (position % 2 != 0) { outRect.right = mItemOffset; } outRect.left = mItemOffset; outRect.bottom = mItemOffset; } } |
You can call ItemDecoration
like below code.
recyclerView = (RecyclerView)
view.findViewById(R.id.recycler_view);
GridLayoutManager lLayout = new GridLayoutManager(getActivity(), 2); ItemOffsetDecoration itemDecoration = new ItemOffsetDecoration(mActivity, R.dimen.item_offset); recyclerView.addItemDecoration(itemDecoration); recyclerView.setLayoutManager(lLayout); |
dimen.xml
<dimen
name="item_offset">5dp</dimen>
Comments :
Post a Comment