我想了解为什么我似乎无法在LinearLayoutManager上使用scrollToPositionWithOffset方法?请查看图片以了解我的意思:
一些背景:
图像中的第一行(带有scrollToPosition
)正在滚动RecyclerView以使位置(在这种情况下为50)可见(可见)-这通常意味着所选位置显示在可见的RecyclerView的底部(“滚动”后,位置50首先变为可见)。而我想始终将其显示在顶部。根据我的研究,某种解决方案似乎是使用这种scrollToPositionWithOffset
方法(Scroll RecyclerView to show selected item on top)
有趣的是,我可以通过自定义LinearLayoutManager的SmoothScroller来实现所需的功能,但是我的数据集非常庞大,因此“平滑滚动”的速度是一个问题,并且在没有引起其他问题的情况下,我似乎无法充分提高速度。
简而言之,我希望scrollToPositionWithOffset可以帮我这个忙。但是,我不知道如何访问该方法。
答案 0 :(得分:2)
您需要转换LayoutManager
返回的RecyclerView.getLayoutManager()
。
(recyclerview.layoutManager as LinearLayoutManager).scrollToPositionWithOffset
答案 1 :(得分:0)
方法如下:
recyclerView.apply {
(layoutManager as LinearLayoutManager).scrollToPositionWithOffset(itemPosition, offsetValue)
}
请注意,如果列表/ recycleView具有水平方向, offsetValue 可以是 X ;如果列表/ recycleView具有垂直方向,则 Y 。 / p>