相信大家在專案中使用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是相對於視窗本身,也就是瀏覽器視窗而定位的。所以,採...