1. 程式人生 > >RecyclerView 上下左右四種間距的設定方法

RecyclerView 上下左右四種間距的設定方法

RecyclerView控制元件大家肯定不陌生,已經應用有一段時間了,最近在專案中寫一個GridLayout樣式的RecyclerView時需要設定,item之間左右的間距,下面是我總結的一個設定間距的方法分享給大家。

下面是沒間距的情況

img


想要設定item之間的間距需要自己建立一個繼承自RecyclerView.ItemDecoration的類

public class RecyclerViewSpacesItemDecoration extends RecyclerView.ItemDecoration {

   private HashMap<String, Integer> mSpaceValueMap;

   public
static final String TOP_DECORATION = "top_decoration"; public static final String BOTTOM_DECORATION = "bottom_decoration"; public static final String LEFT_DECORATION = "left_decoration"; public static final String RIGHT_DECORATION = "right_decoration"; ​ public RecyclerViewSpacesItemDecoration(HashMap
<String, Integer> mSpaceValueMap) { this.mSpaceValueMap = mSpaceValueMap; } ​ @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { if (mSpaceValueMap.get(TOP_DECORATION) != null) outRect.top = mSpaceValueMap.get
(TOP_DECORATION); if (mSpaceValueMap.get(LEFT_DECORATION) != null) outRect.left = mSpaceValueMap.get(LEFT_DECORATION); if (mSpaceValueMap.get(RIGHT_DECORATION) != null) outRect.right = mSpaceValueMap.get(RIGHT_DECORATION); if (mSpaceValueMap.get(BOTTOM_DECORATION) != null) outRect.bottom = mSpaceValueMap.get(BOTTOM_DECORATION); } }
下面是 設定RecyclerView間距的關鍵方法
HashMap<String, Integer> stringIntegerHashMap = new HashMap<>();
stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.TOP_DECORATION,50);//top間距

stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.BOTTOM_DECORATION,100);//底部間距

stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.LEFT_DECORATION,50);//左間距

stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.RIGHT_DECORATION,100);//右間距

mRecyclerView.addItemDecoration(newRecyclerViewSpacesItemDecoration(stringIntegerHashMap));

可以根據自己的實際情況去設定想要的間距,也可以去單獨設定
下面是設定間距後的效果圖


捕獲.PNG