Android RecyclerView 設定item上下左右間距
如何設定item上下左右之間的間距
我們都知道RecyclerView可以根據不同發LayoutManager實現不同的排列方式,豎排,橫排,網格等。設定Item之間的間距,也是我們在開發中經常遇到的。下面我來介紹一下,如何設定左右上下之間的間距。
package com.jilian.pinzi.views; import android.graphics.Rect; import android.support.v7.widget.RecyclerView; import android.view.View; import java.util.HashMap; 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); } }
上面是封裝好的一個設定間距的類。
下面介紹如何使用:
HashMap<String, Integer> stringIntegerHashMap = new HashMap<>(); stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.RIGHT_DECORATION,10);//右間距 recyclerView.addItemDecoration(new RecyclerViewSpacesItemDecoration(stringIntegerHashMap));
通過以上的方式,我們可以設定item之間的間距,並且可以選擇方向,左右上下間距。
卡片摺疊的實現
在開發中,我們有時候會遇到卡片摺疊的介面。如下圖:
上下摺疊

image.png
左右摺疊

image.png
其實不管事那種摺疊方式,實現原理都是一樣的,我們都知道,可以設定item之間的間距,我們平時設定的都是整數,要實現這種摺疊的樣式,只需要把item之間的間距設定成負數即可。具體的程式碼就不寫出來了,大家可以自己去試試。