RecycleView4種定位滾動

2021-08-07 08:20:30 字數 2805 閱讀 6753

相信大家在專案中使用recyclerview時,經常會遇到這樣的需求:

將recyclerview滑動到指定位置,或者檢索recyclerview的某一項(各個項的高度不確定),然後定位滾動這到一項,將它顯示。

下面就講解4種recyclerview定位滾動的方式及具體效果演示。

使用:recyclerview.scrollby(x, y)

scrollby(x, y)這個方法是自己去控制移動的距離,單位是畫素,所以在使用scrollby(x, y)需要自己去計算移動的高度或寬度。

使用:recyclerview.scrolltoposition(position)

scrolltoposition(position)這個方法的作用是定位到指定項,就是把你想顯示的項顯示出來,但是在螢幕的什麼位置是不管的,只要那一項現在看得到了,那它就罷工了!

使用:recyclerview.smoothscrolltoposition(position)

smoothscrolltoposition(position)scrolltoposition(position)效果基本相似,也是把你想顯示的項顯示出來,只要那一項現在看得到了,那它就罷工了,不同的是smoothscrolltoposition是平滑到你想顯示的項,而scrolltoposition是直接定位顯示!

使用:((linearlayoutmanager)recyclerview.getlayoutmanager()).scrolltopositionwithoffset(position,0);

若在滾動的時候呼叫可能不準確,可以在呼叫此方法前,呼叫

mrecyclerview.stopscroll();
linearlayoutmanager llm = (linearlayoutmanager) mrecyclerview.getlayoutmanager();

llm.scrolltopositionwithoffset(i, 0);

llm.setstackfromend(false);

github

概述 recyclerview在安卓開發中非常實用,而且簡單易用,但是在實際開發中一直有乙個問題困擾著我,就是定位問題,實際的專案中總是會遇到這樣的需求:檢索recyclerview的某一項(各個項的高度不確定),然後定位這一項,將它顯示在頂部。用recyclerview的預設移動的方法並不能實現這一點(個人感覺官方可能出於效能考慮才不實現這一點)。這篇部落格就講解下我個人是如何實現這個需求的。

recyclerview提供的用於控制移動的方法有2個 

-scrolltoposition(int)

這個方法的作用是顯示指定項,就是把你想置頂的項顯示出來,但是在螢幕的什麼位置是不管的,只要那一項現在看得到了,那它就罷工了! 

-scrollby(int x,int y)

這個方法是自己去控制移動的距離,單位應該是畫素。

使用scrolltoposition時,移動到前面的項時,它缺省會將要顯示的項置頂,但是移動到後面的項時,位置就說不好了(看它心情!)一般會顯示在最後乙個。用過的應該都有所了解。 

使用scrollby時就需要自己計算高度或者寬度。在動態的布局中且各項樣式高度可能都不一樣的情況下,自己計算高度是很有難度的。

上面說了這麼多廢話,結論就是這2個方法都不能很好解決問題,但是,當他們2個結合使用的時候,我們的問題就變的好解決很多了!

思路是:先用scrolltoposition,將要置頂的項先移動顯示出來,然後計算這一項離頂部的距離,用scrollby完成最後的100公尺!

先傳入要置頂第幾項,然後區分情況處理

adapter.getitemcount(),獲取總item個數

private

void

movetoposition(int n) else

if ( n <= lastitem )else

}

recyclerview滾動監聽

class

recyclerviewlistener

extends

recyclerview.onscrolllistener}}

}

[csdn]

[github]

css 4種定位方式

css的定位即position屬性的值有4種 static,relative,absolute,fixed。static是預設值,元素位於文件流中,正常顯示,忽略元素的top,bottom,left,right屬性。需要注意的一點是z index屬性在這個定位方式下始終為0.如果其他定位方式的漂浮元...

android 定位的4種方式介紹

android 定位一般有四種方法,這四種方式分別是 gps定位,wifi定準,基站定位,agps定位,1 android gps 需要gps硬體支援,直接和衛星互動來獲取當前經緯度,這種方式需要手機支援gps模組 現在大部分的智慧型機應該都有了 通過gps方式準確度是最高的,但是它的缺點也非常明顯...

CSS中position的4種定位詳解

大家都知道,css中的position有4種取值,分別是static fixed relative absolute。詳細解釋 static 相當於沒有定位,元素會出現在正常的文件流中。fixed 元素框的表現類似於absolute,但是fixed是相對於視窗本身,也就是瀏覽器視窗而定位的。所以,採...