RecyclerView 使用GridLayoutManager怎样设置行间隔
时间: 2023-08-08 16:04:27 浏览: 156
使用 GridLayoutManager 来实现 RecyclerView 的网格布局,在设置 GridLayoutManager 时,可以通过 setSpanSizeLookup() 方法来设置每个 item 所占用的网格数,而在设置行间隔时,可以通过设置 item 之间的间距来实现。
具体实现步骤如下:
1. 创建 GridLayoutManager 对象,并设置每个 item 所占用的网格数:
```java
GridLayoutManager layoutManager = new GridLayoutManager(context, spanCount);
layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
// 返回当前 item 所占用的网格数
return 1;
}
});
```
2. 创建 ItemDecoration 对象,并设置 item 之间的间距:
```java
int spacing = 10; // 行间距
int halfSpacing = spacing / 2;
recyclerView.addItemDecoration(new RecyclerView.ItemDecoration() {
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
super.getItemOffsets(outRect, view, parent, state);
int position = parent.getChildAdapterPosition(view);
int column = position % spanCount;
outRect.left = halfSpacing;
outRect.right = halfSpacing;
outRect.bottom = spacing;
if (position < spanCount) {
outRect.top = spacing;
}
}
});
```
其中,getItemOffsets() 方法会在 RecyclerView 绘制 item 时被调用,可以通过设置 outRect 来控制 item 之间的间距。
以上代码中,我们设置了左右间距为行间距的一半,底部间距为行间距,顶部间距只在每一行的第一个 item 上设置。
这样就可以实现 RecyclerView 网格布局的行间隔了。
阅读全文