Recyclerview - 重叠项目从下到上

Bil*_*kki 20 java android android-recyclerview

我为这样的项目设置了负余量: -

ItemDecoration.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;
    }
}
Run Code Online (Sandbox Code Playgroud)

MainActivity.java

recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.addItemDecoration(new ItemDecorator(-80));
Run Code Online (Sandbox Code Playgroud)

这会导致顶部项目在顶部项目重叠之后堆叠最低项目和下一个项目.我希望顶级项目与下一个项目重叠,依此类推.

目前来看

在此输入图像描述

必需的视图

在此输入图像描述

Tas*_*eem 11

尝试这种方式并反向渲染您的回收者视图.

LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        layoutManager.setReverseLayout(true);
        layoutManager.setStackFromEnd(true);
        recyclerView.setLayoutManager(layoutManager);
Run Code Online (Sandbox Code Playgroud)

这是GitHub Link的工作示例

  • 如果有人使用 Bilal 的 ItemDecorator,那么当您执行此操作时,最后一张卡将位于顶部。因此,请确保您不希望偏移的位置不是 0,而是 itemCount - 1。此外,该顶部项目将是 item3,而不是 item1 (2认同)

Kir*_*ach 5

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

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

进而

recyclerView.setChildDrawingOrderCallback(BackwardsDrawingOrderCallback())
Run Code Online (Sandbox Code Playgroud)

因此,不再需要设置反向顺序和堆栈。