RecyclerView应该显示前一项和下一项的一半



我有一个水平滚动的RecyclerView。我有50件。在使用scrollToPosition方法创建RecyclerView后,我立即转到第25项。现在我想把第25项放在屏幕中央。第24条和第26条只能看到两边的一半。RecyclerView宽度为匹配父级。父节点为LinearLayout。我也使用LinearSnapHelper。我遇到的问题是,使用scrollToPosition滚动到第25个项目后,第25个项目在屏幕的开始。第24项不可见。一旦我稍微滚动RecyclerView,快照开始工作,第25项来到中心,第24和第26项出现在两侧。在这之后,一切都很好。只是初始位置不对。我想要第25项在屏幕的中心,而不是在屏幕的开始。提前感谢。如果有人需要更多的信息,请在评论中提到,我会更新我的问题。

创建自定义线性平滑滚动条

class SmoothCenterScroller(private val mContext: Context) : LinearSmoothScroller(mContext) {
override fun calculateDtToFit(
viewStart: Int,
viewEnd: Int,
boxStart: Int,
boxEnd: Int,
snapPreference: Int
): Int {
return (boxStart+(boxStart-boxEnd) /2) - (viewStart + (viewEnd - viewStart)-2)
}
}

用法:

val smoothScroll =  SmoothCenterScroller(mRecyclerView.context)
smoothScroll.targetPosition = TARGET_POSITION
layoutManager.startSmoothScroll(smoothScroll)

相关内容

  • 没有找到相关文章

最新更新