我有一个水平滚动的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)