【问题标题】:Android RecyclerView overlap items (Card stacks)Android RecyclerView 重叠项(卡堆)
【发布时间】:2016-08-30 07:21:39
【问题描述】:

如何在 RecyclerView 中重叠项目? 就像堆叠卡片一样。

提前致谢。

【问题讨论】:

  • 你这样做了吗?我需要相同的视图
  • @DenisNek:对不起,不。由于 LayoutManager 的方式并不简单,所以我还是使用 ListView 来做。
  • @denis Nak 你有没有得到任何东西我也有同样的问题

标签: android android-recyclerview overlap


【解决方案1】:

要重叠 recyclerView 行,可以使用这个。

将此课程添加到您的活动中。您可以自定义 vertOverlap。

   public class OverlapDecoration extends RecyclerView.ItemDecoration {

    private final static int vertOverlap = -40;

    @Override
    public void getItemOffsets (Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
        final int itemPosition = parent.getChildAdapterPosition(view);
        if (itemPosition == 0) {
            return; }
        outRect.set(0, vertOverlap, 0, 0);


    }
} `

然后在设置布局管理器之前将你的装饰添加到recyclerView,我们就完成了。

    mRecyclerView.addItemDecoration(new OverlapDecoration());
    mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

感谢@MojoTosh https://stackoverflow.com/a/29067942/6255073

【讨论】:

  • 我已经回复了解决方案,但有一个问题:它有一个奇怪的行为,只显示可以完全绘制的项目。它不会在最底部的下方显示下一项的顶部。
  • @shiami 你能解释清楚吗?可能是您当前问题的屏幕截图。在我的情况下,第一行保持不变,其他行正确重叠
  • 要重叠所有项目,您可以删除 if (itemPosition == 0 因为如果您在 recyclerview 中有填充/边距,它是无用的
【解决方案2】:

您必须编写自己的 LayoutManager 或扩展 LinearLayoutManager

【讨论】:

  • 感谢您的回答。你能提供任何开始的想法吗?
  • android.googlesource.com/platform/frameworks/support/+/master/… 你应该从阅读LinearLayoutManager 的源代码开始,实际上你需要在最后修改大部分代码。我相信您可以先将整个源代码复制为自己的CardStackLayoutManager,然后尝试编辑onLayoutChildren
  • 谢谢。我会试试的。
  • 我发现难以扩展或修改LinearLayoutManager。寻找另一种更简单的方法。
  • 是的,LayoutManager的制作并不容易。也许您可以尝试通过一些图纸来伪造它,例如让每个项目添加一个孩子作为下面项目的顶部
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多