【问题标题】: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 继承并覆盖填充方法。就我而言,我需要覆盖getPaddingTop 和getPaddingBottom,因为我是垂直滚动的:
class CustomLinearLayoutManager(context: Context): LinearLayoutManager(context) {
override fun getPaddingTop(): Int {
return (height / 2) - 100
}
override fun getPaddingBottom(): Int {
return paddingTop
}
}
在这里,我通过将LinearLayoutManager 的height 除以2 来计算填充。我减去100,因为这是孩子身高的一半。我希望可以修改此计算以适用于不同身高的儿童。