如何设置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之间的间距,并且可以选择方向,左右上下间距。
卡片折叠的实现
在开发中,我们有时候会遇到卡片折叠的界面。如下图:
上下折叠

左右折叠

其实不管事那种折叠方式,实现原理都是一样的,我们都知道,可以设置item之间的间距,我们平时设置的都是整数,要实现这种折叠的样式,只需要把item之间的间距设置成负数即可。具体的代码就不写出来了,大家可以自己去试试。
网友评论