RecycleView 4種定位滾動方式演示
相信大家在專案中使用RecyclerView時,經常會遇到這樣的需求:
將RecyclerView滑動到指定位置,或者檢索RecyclerView的某一項(各個項的高度不確定),然後定位滾動這到一項,將它顯示。
下面就講解4種RecyclerView定位滾動的方式及具體效果演示。
scrollBy
recyclerView.scrollBy(x, y)
使用:recyclerView.scrollBy(x, y)
scrollBy(x, y)
這個方法是自己去控制移動的距離,單位是畫素,所以在使用scrollBy(x, y)
需要自己去計算移動的高度或寬度。
scrollToPosition
recyclerView.scrollToPosition(position)
使用: recyclerView.scrollToPosition(position)
scrollToPosition(position)
這個方法的作用是定位到指定項,就是把你想顯示的項顯示出來,但是在螢幕的什麼位置是不管的,只要那一項現在看得到了,那它就罷工了!
smoothScrollToPosition
recyclerView.smoothScrollToPosition(position)
使用: recyclerView.smoothScrollToPosition(position)
smoothScrollToPosition(position)
和scrollToPosition(position)
效果基本相似,也是把你想顯示的項顯示出來,只要那一項現在看得到了,那它就罷工了,不同的是smoothScrollToPosition是平滑到你想顯示的項,而scrollToPosition是直接定位顯示!
scrollToPositionWithOffset
scrollToPositionWithOffset(position,0)
使用: ((LinearLayoutManager)recyclerView.getLayoutManager()).scrollToPositionWithOffset(position,0);
主角總是最後才登場,這種方式是定位到指定項如果該項可以置頂就將其置頂顯示。
scrollToPositionWithOffset 會把 Item 移動到可見 Item 的第一項,即使它已經在可見 Item 之中。另外它還有 offset 引數,表示 Item 移動到第一項後跟 RecyclerView 上邊界或下邊界之間的距離(預設是 0)如果想滑動到某個Item的上面一些
scrollToPositionWithOffset(int position, int offset) {) offset為正值 如果想滑動到某個item 的下邊 offset用負數