recyclerview 中的 GridLayoutManager,元素之间有空间并匹配全宽

Posted

技术标签:

【中文标题】recyclerview 中的 GridLayoutManager,元素之间有空间并匹配全宽【英文标题】:GridLayoutManager in recyclerview with space among elements and matching the full width 【发布时间】:2022-01-08 01:42:39 【问题描述】:

我想使用一个网格布局管理器,项目分为 2 列。 我希望每一行在项目之间平均分配,并且项目周围也有一些小空间。 我做到了:

val manager = GridLayoutManager(this, 4)
manager.spanSizeLookup = object: GridLayoutManager.SpanSizeLookup() 
     override fun getSpanSize(position: Int): Int = 2

recycler.layoutManager = manager  

但即使每行中的项目大小相同,它们之间也有很大的差距,并且与下面的项目没有空间。 我该如何解决这个问题? 请注意,我为视图中的膨胀项目使用了特定的宽度/大小。我想这是一个问题,但不确定我应该为那些使用什么

【问题讨论】:

【参考方案1】:
    如果您只需要两个列项,则不必设置 spanSizeLookup 属性,只需设置 layoutManager 并添加 ItemDecoration 用于间距:
val manager = GridLayoutManager(this, 2)
recycler.layoutManager = manager  
recycler.addItemDecoration(DividerItemDecoration(this, manager.orientation)
    确保您的回收站项目布局父视图将其layout_width 设置为match_parent

【讨论】:

如果我使用layout_margin="8dp",中间不会变成16 dp吗? IE。每个项目 8 个? 实际上只将marging添加到与recyclerview的边框 @Jim 这就是为什么您需要将填充设置为回收站视图 实际上我必须添加ItemDecoration,否则项目没有间隔 但是您的其他 2 条建议有所帮助

以上是关于recyclerview 中的 GridLayoutManager,元素之间有空间并匹配全宽的主要内容,如果未能解决你的问题,请参考以下文章

在recyclerview的嵌套recyclerview中的嵌套列表中添加项目

RecyclerView | 处理 RecyclerView 中的点击事件

Kotlin - Recyclerview 分页中的问题

AndroidStudio-添加RecyclerView包 AndroidStudio添加v7包中的RecyclerView

如何从其他recyclerview接收recyclerview中的数据?

更新片段中的 RecyclerView