[Android Recyclerview GridLayoutManager column spacing](http://stackoverflow.com/questions/28531996/android-recyclerview-gridlayoutmanager-column-spacing) Here is the question, the first answer does not work well in my project,and it makes the spacing bigger between item and item. the second answer is quite perfect.But if RecyclerView has headers,it does not work well. Then I fixed it. ```Java import android.graphics.Rect; import android.support.v7.widget.RecyclerView; import android.view.View; /** * Created by Android Studio * User: Ailurus(ailurus@foxmail.com) * Date: 2015-10-28 * Time: 15:20 */ public class GridSpacingItemDecoration extends RecyclerView.ItemDecoration { private int spanCount; private int spacing; private boolean includeEdge; private int headerNum; public GridSpacingItemDecoration(int spanCount, int spacing, boolean includeEdge, int headerNum) { this.spanCount = spanCount; this.spacing = spacing; this.includeEdge = includeEdge; this.headerNum = headerNum; } @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { int position = parent.getChildAdapterPosition(view) - headerNum; // item position if (position >= 0) { int column = position % spanCount; // item column if (includeEdge) { outRect.left = spacing - column * spacing / spanCount; // spacing - column * ((1f / spanCount) * spacing) outRect.right = (column + 1) * spacing / spanCount; // (column + 1) * ((1f / spanCount) * spacing) if (position < spanCount) { // top edge outRect.top = spacing; } outRect.bottom = spacing; // item bottom } else { outRect.left = column * spacing / spanCount; // column * ((1f / spanCount) * spacing) outRect.right = spacing - (column + 1) * spacing / spanCount; // spacing - (column + 1) * ((1f / spanCount) * spacing) if (position >= spanCount) { outRect.top = spacing; // item top } } } else { outRect.left = 0; outRect.right = 0; outRect.top = 0; outRect.bottom = 0; } } } } ``` If you want to use it, just do as the following. ```Java int spacingInPixels = getResources().getDimensionPixelSize(R.dimen.grid_layout_margin); recyclerView.addItemDecoration(new GridSpacingItemDecoration(2, spacingInPixels, true, 0)); ```