【问题标题】:GridLayoutManager in recyclerview with space among elements and matching the full widthrecyclerview 中的 GridLayoutManager,元素之间有空间并匹配全宽
【发布时间】: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  

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

【问题讨论】:

    标签: android android-recyclerview android-gridlayout


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

    【讨论】:

    • 如果我使用layout_margin="8dp",中间不会变成16 dp吗? IE。每个项目 8 个?
    • 实际上只将marging添加到与recyclerview的边框
    • @Jim 这就是为什么您需要将填充设置为回收站视图
    • 实际上我必须添加ItemDecoration,否则项目没有间隔
    • 但是您的其他 2 条建议有所帮助
    猜你喜欢
    • 1970-01-01
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多