我通过复制和更新Android的StaggeredGridView解决了这个问题.https://github.com/maurycyw/StaggeredGridView.似乎非常适合创建您正在寻找的效果.在此之前,我把Android的源代码复制到一个单独的库(我开始工作),直到我看到现在的实验性StaggeredGridView.它比我原来的"BrickView"库项目简单得多,所以我更换了它.
我们不需要任何外部库,因为Android的本机RecyclerView只需更改RecyclerView的布局管理器即可实现Pinterest砌体布局
mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
RecyclerAdapter adapter = new RecyclerAdapter(this);
mRecyclerView.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
凉。这很简单,但是LinearLayout上的边距似乎不起作用。所以这是一个快速修复。
SpacesItemDecoration decoration = new SpacesItemDecoration(16);
mRecyclerView.addItemDecoration(decoration);
Run Code Online (Sandbox Code Playgroud)
SpacesItemDecoration类:
public class SpacesItemDecoration extends RecyclerView.ItemDecoration {
private final int mSpace;
public SpacesItemDecoration(int space) {
this.mSpace = space;
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
outRect.left = mSpace;
outRect.right = mSpace;
outRect.bottom = mSpace;
// Add top margin only for the first item to avoid double space between items
if (parent.getChildAdapterPosition(view) == 0)
outRect.top = mSpace;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10129 次 |
| 最近记录: |