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 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 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 stringIntegerHashMap = new HashMap<>();
        stringIntegerHashMap.put(RecyclerViewSpacesItemDecoration.RIGHT_DECORATION,10);//右间距
        recyclerView.addItemDecoration(new RecyclerViewSpacesItemDecoration(stringIntegerHashMap));

通过以上的方式,我们可以设置item之间的间距,并且可以选择方向,左右上下间距。

卡片折叠的实现

在开发中,我们有时候会遇到卡片折叠的界面。如下图:

上下折叠

Android RecyclerView 设置item上下左右间距_第1张图片
image.png

左右折叠

Android RecyclerView 设置item上下左右间距_第2张图片
image.png

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

你可能感兴趣的:(Android RecyclerView 设置item上下左右间距)