【问题标题】:Recyclerview - Overlap items bottom to topRecyclerview - 从下到上重叠项目
【发布时间】:2017-04-02 07:13:50
【问题描述】:

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

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));

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

当前视图

必填视图

【问题讨论】:

    标签: java android android-recyclerview


    【解决方案1】:

    试试这个方法,反向渲染你的回收站视图。

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

    这是工作示例GitHub Link

    【讨论】:

    • 完美答案!
    • 如果有人在使用 Bilal 的 ItemDecorator,当你这样做时,最后一张卡片将在顶部。因此,请确保您不希望偏移的位置不是 0,而是 itemCount - 1。此外,此顶部项目将是 item3,而不是 item1
    • @Tasneem 其显示反向列表的第一项是最后一项,最后一项是第一项
    • @Tasneem 顶部项目视图与底部项目视图重叠的任何解决方案
    • @NikunjParadva 您必须反转您的输入列表才能工作,或者只是忽略反转并为您的项目视图设置 z 索引。
    【解决方案2】:

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

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

    然后

    recyclerView.setChildDrawingOrderCallback(BackwardsDrawingOrderCallback())
    

    所以不需要再设置倒序和从头开始堆叠了。

    【讨论】:

      【解决方案3】:

      尝试覆盖此方法。

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

      【讨论】:

      • 感谢您的回答。真的很感激。我想你错过了理解我的问题。我添加了图片以更好地了解我的要求。请看一看。
      猜你喜欢
      • 1970-01-01
      • 2015-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多