2017-01-25 2 views
0

基本的にはタイトルのことです。自分のファストスクローラーを実装しようとしています。Recyclerview scrollToPosition()がfindFirstVisibleItemPosition()と一致しません

recyclerView.scrollToPosition(position); 

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

今の問題は、これら2つの値が時々をと一致しないと、私はなぜ知らないということです。これは、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をスクロールする必要がありますが、recyclerviewの巻物私の知る限りLinearLayoutManager ...

linearLayoutManager.scrollToPositionWithOffset(position, 0); 
+1

参照 'LinearLayoutManager#scrollToPosition(int position) 'ドキュメント – pskink

答えて

1

ません実現。 llm.findFirstVisiblePosition()は、画面の最初の項目を表示します。==画面上部の項目です。

関連する問題