RecyclerVeiw本身自带有距离设置的类,如下:只需要我们继承一下即可
public class SpaceBaseItemDecoration extends RecyclerView.ItemDecoration { private int space; public SpaceBaseItemDecoration(int space) { this.space = space; } @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { RecyclerView.LayoutManager layoutManager = parent.getLayoutManager(); outRect.top = space; outRect.left = space; outRect.right = space; outRect.bottom = space; } }
设置这个之后发现前两端的距离相等,但是中间的是两倍,这是为什呢?
因为left 和right在中间都有设置,所有中间宽
这里就要利用padding值来改变,加入需要设定的值是10dp,那么久设置前后左右的距离为space =5dp,Recyclerview的padding值也设置为5dp,那么上下左右就一直了
mRecycleView.setPadding(dimension,dimension,dimension,dimension); SpaceBaseItemDecoration decoration = new SpaceBaseItemDecoration((int) getResources().getDimension(R.dimen.specotor_space)); mRecycleView.addItemDecoration(decoration);
在加载图片计算宽度的时候,我们就需要算出
屏幕宽度一半--减去--space *6 两个padding + 前后左右