When using RecyclerView, we often need set dividers between items. Usually, we set right_margin to the root layout of each item. In this way, you hava to set a left_margin to the RecyclerView to make the list looks symmetric. There's another way to do this. We can customize ItemDecoration and override the getItemOffsets method. Also, set
right to the parameter
outRect to each item. And add
left to the first item. In this way, you will find that the width between the first and other items are not the same.
SCommonItemDecoration is the best way. It supports LinearLayoutManager, GridLayoutManager and StaggeredGridLayoutManager, also supports different orientation.
You need first initailize a
SCommonItemDecoration.ItemDecorationProps which contains properties for different type of items.
SparseArray<SCommonItemDecoration.ItemDecorationProps> propMap = new SparseArray<>();
SCommonItemDecoration.ItemDecorationProps inculdes these fields:
private int verticalSpace; private int horizontalSpace; private boolean hasVerticalEdge; private boolean hasHorizontalEdge;
After set these fields of
ItemDecorationProps, new a
SCommonItemDecoration and set it to the RecyclerView:
That's all, enjoy youself.