回收商视图 - 从下到上重叠项目

2022-09-01 13:20:11

我已经为这样的项目设置了负边距:-

项目装饰.java

public class ItemDecorator extends RecyclerView.ItemDecoration {
    private final int mSpace;

    public ItemDecorator(int space) {
        this.mSpace = space;
    }

    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
        int position = parent.getChildAdapterPosition(view);
        if (position != 0)
            outRect.top = mSpace;
    }
}

主要活动.java

recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.addItemDecoration(new ItemDecorator(-80));

这会导致顶部项目堆叠最低项目,并在顶部项目与顶部项目重叠后堆叠下一个项目。我希望顶部项目与其下一个项目重叠,依此类推。

当前视图

enter image description here

所需视图

enter image description here


答案 1

尝试使用这种方式,并以相反的方向渲染回收器视图。

LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        layoutManager.setReverseLayout(true);
        layoutManager.setStackFromEnd(true);
        recyclerView.setLayoutManager(layoutManager);

这是 GitHub 链接的工作示例


答案 2

截至2020年,有新的接口ChildDrawingOrderCallback。它定义回收站视图中绘图元素的顺序。可以这样使用:

class BackwardsDrawingOrderCallback : RecyclerView.ChildDrawingOrderCallback {
    override fun onGetChildDrawingOrder(childCount: Int, i: Int) = childCount - i - 1
}

然后

recyclerView.setChildDrawingOrderCallback(BackwardsDrawingOrderCallback())

因此,无需再设置反向顺序或从末端堆叠。


推荐