如何在 RecyclerView 中重叠项目? 就像堆叠卡片一样。
提前致谢。
要重叠 recyclerView 行,您可以使用它。
将此课程添加到您的活动中。您可以自定义 vertOverlap。
public class OverlapDecoration extends RecyclerView.ItemDecoration {
private final static int vertOverlap = -40;
@Override
public void getItemOffsets (Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
final int itemPosition = parent.getChildAdapterPosition(view);
if (itemPosition == 0) {
return; }
outRect.set(0, vertOverlap, 0, 0);
}
} `
之后在设置布局管理器之前将装饰添加到 recyclerView,我们就完成了。
mRecyclerView.addItemDecoration(new OverlapDecoration());
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
感谢@MojoTosh https://stackoverflow.com/a/29067942/6255073
您必须编写自己的 LayoutManager 或扩展 LinearLayoutManager
opsenes 答案很有效!但我添加了百分比计算而不是固定值,以便它可以适用于多种设备和屏幕。
class ItemDecorator() : RecyclerView.ItemDecoration() {
override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) {
val position = parent.getChildAdapterPosition(view)
if (position != 0) {
val widthOverlapPercentage = 0.25
val previousView = parent[position - 1]
val overlapWidth = previousView.width * widthOverlapPercentage
outRect.left = overlapWidth.toInt() * -1
}
}
}
我的解决方案是基于水平
RecyclerView
,所以如果你想实现Vertical,只需将previousView.width
切换为previousView.height
,将outRect.left
切换为outRect.top
。