2

有哪些方法可以使视图之间的垂直间距相同,如下图所示?

我有什么在此处输入图像描述

我需要什么在此处输入图像描述

我已经尝试过使用我为每个“图块”充气的 LinearLayout 的高度,但似乎无法弄清楚这一点。

4

2 回答 2

6

你可以查看这个库。它处于测试状态:

反足墙

网络

于 2013-06-10T20:26:40.483 回答
1

我们不需要任何外部库,因为 Android 的原生 RecyclerView 只需更改 RecyclerView 的布局管理器即可实现 Pinterest 砌体布局

mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
RecyclerAdapter adapter = new RecyclerAdapter(this);
mRecyclerView.setAdapter(adapter);

凉爽的。这很容易,但我的 LinearLayout 上的边距似乎不起作用。所以这里有一个快速修复。

SpacesItemDecoration decoration = new SpacesItemDecoration(16);
mRecyclerView.addItemDecoration(decoration);

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;
    }
}

示例的 Github 链接

我的最终结果

于 2017-08-19T07:54:24.230 回答