recyclerview本身有一个ItemDecoration的类 是可以用来自由设置间距的
但是一定要注意的是 不能重复设置 如果重复设置 列表间距会越来越大的哦
public class SpacesItemDecoration extends RecyclerView.ItemDecoration {
private static final String TAG=SpacesItemDecoration.class.getSimpleName();
private int space;
private List<ActionCenterBean.DataBean> list;
private Context context;
public SpacesItemDecoration(int space, List<ActionCenterBean.DataBean> list, Context context) {
this.space = space;
this.list=list;
this.context=context;
}
@Override
public void getItemOffsets(Rect outRect, View view,
RecyclerView parent, RecyclerView.State state) {
//设置item的上下左右的margin
outRect.left = space;
outRect.right = space;
// outRect.bottom = space;
//设置列表首个item和最后一个item的margin间距
if (parent.getChildAdapterPosition(view)==0){
int dimensionPixelSize = context.getResources().getDimensionPixelSize(R.dimen.dp_41);
outRect.left=dimensionPixelSize;
}
if (parent.getChildAdapterPosition(view)==list.size()-1){
int dimensionPixelSize = context.getResources().getDimensionPixelSize(R.dimen.dp_41);
outRect.right=dimensionPixelSize;
}
// Add top margin only for the first item to avoid double space between items
// if (parent.getChildPosition(view) == 0)
// outRect.top = space;
}
}
初始化
//间距的标识,每次启动或者刷新的时候 只设置一次间距
spaceTag++;
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);
linearLayoutManager.setOrientation(RecyclerView.HORIZONTAL);
home_recycler.setLayoutManager(linearLayoutManager);
if (spaceTag==1){
home_recycler.addItemDecoration(new SpacesItemDecoration(getResources().getDimensionPixelOffset(R.dimen.dp_17),data,context));
}
网友评论