Recyclerview scrollToPosition()与findFirstVisibleItemPosition()不匹配

时间:2017-01-25 07:51:16

标签: android android-layout android-recyclerview

基本上标题是什么。我正在尝试实现自己的fastscroller。

recyclerView.scrollToPosition(position);

System.out.println(position + " :: " + 
linearLayoutManager.findFirstVisibleItemPosition() );

现在问题是这两个值与有时不匹配,我不知道为什么。这意味着,recyclerview不会滚动到所需位置,而且linearLayoutManager对于当前位置是正确的。

输出很奇怪,第一个可见位置要么匹配所需的滚动位置,要么第一个可见位置正好低于所需的7个位置。 (除非Recyclerview需要一些时间滚动到该位置。)

输出:

I/System.out: 49 :: 42
I/System.out: 82 :: 42
I/System.out: 82 :: 75
...
I/System.out: 386 :: 379
I/System.out: 431 :: 379
I/System.out: 431 :: 424
I/System.out: 431 :: 424

那么如何精确滚动到所需的位置呢?

编辑:我意识到我不需要滚动recyclerview,但是LinearLayoutManager ...

linearLayoutManager.scrollToPositionWithOffset(position, 0);

1 个答案:

答案 0 :(得分:1)

afaik,Recyclerview滚动到所需位置显示在屏幕底部。 llm.findFirstVisiblePosition()显示屏幕上的第一项==屏幕顶部的项目。