RecyclerView添加ItemDecoration

前言

本来来自于项目:
https://github.com/yqritc/RecyclerView-FlexibleDivider
只需要简单的几句话就能设置我们想要的效果!


具体的用法参照原项目!
效果:


RecyclerView 横向纵向间距设置

Looking for custom ItemDecoration to achieve equal column space for GridLayoutManager?
ItemOffsetDecoration:

public class ItemOffsetDecoration extends RecyclerView.ItemDecoration {

    private int mItemOffset;

    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);
        outRect.set(mItemOffset, mItemOffset, mItemOffset, mItemOffset);
    }
}

In your source code, add ItemOffsetDecoration to your recyclerview.
Item offset value should be half size of the actual value you want to add as space between items.

mRecyclerView.setLayoutManager(new GridLayoutManager(context, NUM_COLUMNS);
ItemOffsetDecoration itemDecoration = new ItemOffsetDecoration(context, R.dimen.item_offset);
mRecyclerView.addItemDecoration(itemDecoration);

Also, set item offset value as padding for its recyclerview, and specify android:clipToPadding=false.


DONE. You will get an equal spaces around items.

你可能感兴趣的:(RecyclerView添加ItemDecoration)