Kotlin / RecyclerView:scrollToPositionWithOffset不显示

时间:2018-09-25 18:20:45

标签: android kotlin

我想了解为什么我似乎无法在LinearLayoutManager上使用scrollToPositionWithOffset方法?请查看图片以了解我的意思:

scrollToPositionWithOffset not found!

一些背景:

图像中的第一行(带有scrollToPosition)正在滚动RecyclerView以使位置(在这种情况下为50)可见(可见)-这通常意味着所选位置显示在可见的RecyclerView的底部(“滚动”后,位置50首先变为可见)。而我想始终将其显示在顶部。根据我的研究,某种解决方案似乎是使用这种scrollToPositionWithOffset方法(Scroll RecyclerView to show selected item on top

有趣的是,我可以通过自定义LinearLayoutManager的SmoothScroller来实现所需的功能,但是我的数据集非常庞大,因此“平滑滚动”的速度是一个问题,并且在没有引起其他问题的情况下,我似乎无法充分提高速度。

简而言之,我希望scrollToPositionWithOffset可以帮我这个忙。但是,我不知道如何访问该方法。

2 个答案:

答案 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>