【问题标题】:RecyclerView allow first/last items to be scrolled to the centreRecyclerView 允许将第一个/最后一个项目滚动到中心
【发布时间】:2021-02-26 21:32:17
【问题描述】:

我正在创建一个可滚动的文本视图列表,为此我选择使用RecyclerView。我想修改 RecyclerView 的行为以允许滚动第一个和最后一个项目到屏幕中心。请查看当前行为的此 gif,我可以在其中垂直滚动直到“0”或“9”可见:

我想要实现的是能够滚动直到第一个项目到达中心,而不是当它在顶部可见时。这同样适用于最后一项,我想滚动直到它到达中心,而不是当它在底部可见时。

【问题讨论】:

标签: android kotlin android-recyclerview


【解决方案1】:

sophin's suggestion 帮我解决了我的问题。答案相当简单:从LinearLayoutManager 继承并覆盖填充方法。就我而言,我需要覆盖getPaddingTopgetPaddingBottom,因为我是垂直滚动的:

class CustomLinearLayoutManager(context: Context): LinearLayoutManager(context) {
    override fun getPaddingTop(): Int {
        return (height / 2) - 100
    }

    override fun getPaddingBottom(): Int {
        return paddingTop
    }
}

在这里,我通过将LinearLayoutManagerheight 除以2 来计算填充。我减去100,因为这是孩子身高的一半。我希望可以修改此计算以适用于不同身高的儿童。

【讨论】:

  • 很高兴看到这个!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 2019-03-12
  • 1970-01-01
  • 1970-01-01
  • 2018-02-10
相关资源
最近更新 更多