package awais.instagrabber.customviews.helpers; import android.graphics.Rect; import android.view.View; import androidx.annotation.NonNull; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; public class GridSpacingItemDecoration extends RecyclerView.ItemDecoration { private final int spacing; public GridSpacingItemDecoration(int spacing) { this.spacing = spacing; } @Override public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { final RecyclerView.LayoutManager manager = parent.getLayoutManager(); if (manager instanceof GridLayoutManager) { final int spanCount = ((GridLayoutManager) manager).getSpanCount(); final int position = parent.getChildAdapterPosition(view); final int column = position % spanCount; outRect.left = column * spacing / spanCount; outRect.right = spacing - (column + 1) * spacing / spanCount; if (position < spanCount) outRect.top = spacing; outRect.bottom = spacing; } } }