我为这样的项目设置了负余量: -
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;
}
}
MainActivity.java
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.addItemDecoration(new ItemDecorator(-80));
这会导致顶部项目在最重要项目重叠之后堆叠最低项目和下一项目。我希望顶级项目与下一个项目重叠,依此类推。
当前视图
必读视图
答案 0 :(得分:11)
尝试这种方式并反向渲染您的回收者视图。
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setReverseLayout(true);
layoutManager.setStackFromEnd(true);
recyclerView.setLayoutManager(layoutManager);
以下是工作示例GitHub Link
答案 1 :(得分:3)
从2020年开始,将提供新的界面ChildDrawingOrderCallback。它定义了回收者视图中绘图元素的顺序。可以这样使用:
class BackwardsDrawingOrderCallback : RecyclerView.ChildDrawingOrderCallback {
override fun onGetChildDrawingOrder(childCount: Int, i: Int) = childCount - i - 1
}
然后
recyclerView.setChildDrawingOrderCallback(BackwardsDrawingOrderCallback())
因此不再需要设置反向顺序和结束堆栈。
答案 2 :(得分:0)
尝试重写此方法。
@Override
public int getItemViewType(int position) {
return super.getItemViewType(position);
}