Android Recyclerview GridLayoutManager 去掉固定间距
时间: 2024-11-05 11:32:56 浏览: 37
Android RecyclerView 的 `GridLayoutManager` 默认会为每个网格项添加一些间距,如果你想要去掉这个固定的间距,你可以自定义布局管理器的一些属性或者使用第三方库。
**方法一:修改GridLayoutManager**
1. 创建一个自定义的 GridLayoutManager 子类,并覆盖其默认的 `getSpaceForItem()` 方法,使其返回0:
```java
public class CustomGridLayoutManager extends GridLayoutManager {
public CustomGridLayoutManager(int spanCount, Context context, int orientation) {
super(context, spanCount, orientation);
}
@Override
protected int getSpaceForItem(int i) {
return 0;
}
}
```
然后,在创建 LayoutManager 时使用自定义的 `CustomGridLayoutManager`:
```java
RecyclerView recyclerView = findViewById(R.id.recyclerView);
CustomGridLayoutManager layoutManager = new CustomGridLayoutManager(columns, recyclerView.getContext(), LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(layoutManager);
```
**方法二:使用开源库**
如 `androidx.recyclerview.extensions` 库中的 `SnapHelper` 和 `NoSpaceItemDecoration`,它们可以帮助你在不改变 `GridLayoutManager` 的前提下移除间距:
```java
SnapHelper snapHelper = new SnapHelper();
snapHelper.attachToRecyclerView(recyclerView);
// 或者创建一个自定义的 ItemDecoration 类
NoSpaceItemDecoration noSpaceItemDecoration = new NoSpaceItemDecoration();
recyclerView.addItemDecoration(noSpaceItemDecoration);
```
阅读全文