首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在LinearLayoutManager - RecyclerView中重叠项(如堆叠卡)

如何在LinearLayoutManager - RecyclerView中重叠项(如堆叠卡)
EN

Stack Overflow用户
提问于 2014-12-24 07:50:46
回答 2查看 10.6K关注 0票数 26

这有可能与RecyclerView中的项目重叠吗?

我正在用LinearLayoutManager来尝试这个。

我的需求与LinearLayoutManager中的需求是一样的,我只需要从上到下重叠内部的项目。(如堆叠卡)

我通过使用某些变体看到了ListView。因此,我认为在RecyclerView too.But中这是可能的,经过一些时间的探索,我觉得实现一个定制的布局管理器需要相当长的时间,并且对此有相当程度的理解。(我查看了戴夫关于构建自定义LayoutManager的文章)

所以,现在我想我可能只需要根据我的需求使用ListView变体,而不是处理如此复杂的自定义布局管理器。

但是,我只需要把里面的东西重叠起来。我觉得可能还有别的方向,我还没有意识到。请告诉我,除了上面的,还有ListView变体自定义布局管理器.

我还将在下面发布我的调查结果。

EN

回答 2

Stack Overflow用户

发布于 2015-03-16 00:30:01

我想你是在寻找部分重叠(例如,一副稍微散开的牌)。如果是这样的话,对于RecyclerView和自定义ItemDecoration来说,这看起来相当简单。下面是一个将项目垂直重叠90 by的简单示例:

代码语言:javascript
复制
public class OverlapDecoration extends RecyclerView.ItemDecoration {

  private final static int vertOverlap = -90;

  @Override
  public void getItemOffsets (Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {

    outRect.set(0, vertOverlap, 0, 0);

  }
}

此示例对偏移量进行了硬编码,但如果列表项的高度不同,则需要对其进行测量和添加逻辑。

在设置布局经理之前,将此装饰添加到RV中。我已经在StaggeredGrid上尝试过了,但是它也应该适用于LinearLayout和Grid。

票数 39
EN

Stack Overflow用户

发布于 2019-10-10 10:31:32

您可以使用ItemDecoration of RecyclerView实现

集ItemDecoration :

代码语言:javascript
复制
var customAdapter = CustomListAdapter()
recyclerView.addItemDecoration(MyItemDecoration()) // here set decoration in recyclerview
recyclerView.layoutManager = LinearLayoutManager(context)
recyclerView.adapter = customAdapter

创建ItemDecoration类:

代码语言:javascript
复制
class MyItemDecoration : RecyclerView.ItemDecoration() {

    private val overlapValue = -60

    override fun getItemOffsets(outRect : Rect, view : View, parent : RecyclerView, state : RecyclerView.State) {
        outRect.set(0, 0, 0, overlapValue)  // args is : left,top,right,bottom
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27633454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档