Java Recyclerview-从下到上重叠项目

Java Recyclerview-从下到上重叠项目,java,android,android-recyclerview,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 getItemOffset

我已经为如下项目设置了负边际:-

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;
    }
}
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.addItemDecoration(new ItemDecorator(-80));
MainActivity.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;
    }
}
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.addItemDecoration(new ItemDecorator(-80));
这会导致顶部项目堆叠在顶部项目重叠后的最低和下一个项目。我希望顶部的项目与其下一个项目重叠,依此类推

当前视图

所需视图


尝试覆盖此方法

@Override
public int getItemViewType(int position) {
    return super.getItemViewType(position);
}

尝试这种方法并以相反方向渲染回收器视图

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

以下是工作示例

自2020年起,有了新的界面。它定义了回收器视图中图形元素的顺序。可以这样使用:

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

recyclerView.setChildDrawingOrderCallback(BackwardsDrawingOrderCallback())

因此,不再需要设置反向顺序或从末尾开始堆叠。

谢谢您的回答。非常感谢。我想你明白我的问题了。为了更好地理解我的要求,我添加了图片。请看一看。完美的答案!如果有人在使用Bilal的ItemDecorator,当您这样做时,最后一张卡将位于顶部。因此,请确保不希望偏移的位置不是0,而是itemCount-1。此外,此顶部项目将是项目3,而不是item1@Tasneem其显示反向列表第一项是最后一项,最后一项是first@Tasneem顶部项目视图与底部项目重叠的任何解决方案view@NikunjParadva您必须反转输入列表才能工作,或者忽略反转并为项目视图设置z索引。