Last active
September 17, 2024 09:36
Revisions
-
alexfu revised this gist
Jan 14, 2016 . 1 changed file with 2 additions and 2 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,5 +1,5 @@ ## BEFORE <img src="http://i.imgur.com/gYoIvID.png" width="400" alt="before"> ## AFTER <img src="http://i.imgur.com/xTiItWa.png" width="400" alt="after"> -
alexfu revised this gist
Jan 14, 2016 . 1 changed file with 5 additions and 0 deletions.There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,5 @@ ## BEFORE <img src="http://i.imgur.com/gYoIvID.png" width="100" alt="before"> ## AFTER <img src="http://i.imgur.com/xTiItWa.png" width="100" alt="after"> -
alexfu created this gist
Jan 14, 2016 .There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,74 @@ import android.graphics.Rect; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; public class EqualSpacingItemDecoration extends RecyclerView.ItemDecoration { private final int spacing; private int displayMode; public static final int HORIZONTAL = 0; public static final int VERTICAL = 1; public static final int GRID = 2; public EqualSpacingItemDecoration(int spacing) { this(spacing, -1); } public EqualSpacingItemDecoration(int spacing, int displayMode) { this.spacing = spacing; this.displayMode = displayMode; } @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { int position = parent.getChildViewHolder(view).getAdapterPosition(); int itemCount = state.getItemCount(); RecyclerView.LayoutManager layoutManager = parent.getLayoutManager(); setSpacingForDirection(outRect, layoutManager, position, itemCount); } private void setSpacingForDirection(Rect outRect, RecyclerView.LayoutManager layoutManager, int position, int itemCount) { // Resolve display mode automatically if (displayMode == -1) { displayMode = resolveDisplayMode(layoutManager); } switch (displayMode) { case HORIZONTAL: outRect.left = spacing; outRect.right = position == itemCount - 1 ? spacing : 0; outRect.top = spacing; outRect.bottom = spacing; break; case VERTICAL: outRect.left = spacing; outRect.right = spacing; outRect.top = spacing; outRect.bottom = position == itemCount - 1 ? spacing : 0; break; case GRID: if (layoutManager instanceof GridLayoutManager) { GridLayoutManager gridLayoutManager = (GridLayoutManager) layoutManager; int cols = gridLayoutManager.getSpanCount(); int rows = itemCount / cols; outRect.left = spacing; outRect.right = position % cols == cols - 1 ? spacing : 0; outRect.top = spacing; outRect.bottom = position / cols == rows - 1 ? spacing : 0; } break; } } private int resolveDisplayMode(RecyclerView.LayoutManager layoutManager) { if (layoutManager instanceof GridLayoutManager) return GRID; if (layoutManager.canScrollHorizontally()) return HORIZONTAL; return VERTICAL; } } This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,11 @@ // Automatically infer display orientation of items RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview); recyclerView.addItemDecoration(new EqualSpacingItemDecoration(16)); // 16px. In practice, you'll want to use getDimensionPixelSize // Explicitly specify display orientation of items. // Available display modes: // - HORIZONTAL // - VERTICAL // - GRID RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview); recyclerView.addItemDecoration(new EqualSpacingItemDecoration(16, EqualSpacingItemDecoration.HORIZONTAL)); // 16px. In practice, you'll want to use getDimensionPixelSize