Android RecyclerView滾動(dòng)到指定位置不起作用

滾動(dòng)不起作用

此問題主要是獲取scrollBy滾動(dòng)位置不確定州弟,如果在屏幕之上可正常獲取朽色,如果在屏幕之外就出現(xiàn)無(wú)法定位問題酱酬。而屏幕之外又分為劃過(guò)的位置和未繪制過(guò)的位置。

根據(jù)此問題總結(jié)解決方法如下

1. 滑動(dòng)代碼如下

private boolean move = false;
    private int mIndex = 3;

    private void moveToPosition(int index) {
        this.mIndex = index;
        //獲取當(dāng)前recycleView屏幕可見的第一項(xiàng)和最后一項(xiàng)的Position
        LinearLayoutManager linearLayoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
        int firstItem = linearLayoutManager.findFirstVisibleItemPosition();
        int lastItem = linearLayoutManager.findLastVisibleItemPosition();
        //然后區(qū)分情況
        if (index <= firstItem) {
            //當(dāng)要置頂?shù)捻?xiàng)在當(dāng)前顯示的第一個(gè)項(xiàng)的前面時(shí)
            recyclerView.scrollToPosition(index);
            move = true;
        } else if (index <= lastItem) {
            //當(dāng)要置頂?shù)捻?xiàng)已經(jīng)在屏幕上顯示時(shí)仆救,計(jì)算它離屏幕原點(diǎn)的距離
            int top = recyclerView.getChildAt(index - firstItem).getTop() - toolbar.getHeight() * 2;
            recyclerView.scrollBy(0, top);
        } else {
            //當(dāng)要置頂?shù)捻?xiàng)在當(dāng)前顯示的最后一項(xiàng)的后面時(shí)
            recyclerView.scrollToPosition(index);
            //記錄當(dāng)前需要在RecyclerView滾動(dòng)監(jiān)聽里面繼續(xù)第二次滾動(dòng)
            move = true;
        }
    }

  • 其中抒和,toolbar.getHeight() * 2為上部toolbar和filterview位置,需要空出來(lái)
  • 二次滾動(dòng)會(huì)在RecyclerView的onScroll方法進(jìn)行

2. 二次滾動(dòng)代碼如下

//在這里進(jìn)行第二次滾動(dòng)(最后的距離)
if (move) {
    move = false;
    //獲取要置頂?shù)捻?xiàng)在當(dāng)前屏幕的位置彤蔽,mIndex是記錄的要置頂項(xiàng)在RecyclerView中的位置
    LinearLayoutManager linearLayoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
    int n = mIndex - linearLayoutManager.findFirstVisibleItemPosition();
    if (0 <= n && n < recyclerView.getChildCount()) {
        //獲取要置頂?shù)捻?xiàng)頂部離RecyclerView頂部的距離
        int top = recyclerView.getChildAt(n).getTop() - toolbar.getHeight() * 2;
        //最后的移動(dòng)
        recyclerView.scrollBy(0, top);
    } else if (n < 0) {
        linearLayoutManager.scrollToPositionWithOffset(mIndex, toolbar.getHeight() * 2);
    }
}

  • 在RecyclerView的addOnScrollListener監(jiān)聽中摧莽,onScrolled回調(diào)方法加上此段代碼,進(jìn)行二次滾動(dòng)顿痪,完美解決镊辕。
  • 其中l(wèi)inearLayoutManager.scrollToPositionWithOffset()滾動(dòng)解決不在屏幕的item滾動(dòng)位置問題
  • 已驗(yàn)證scrollToPosition如果不在屏幕滾動(dòng)是不起作用的。
  • 參考網(wǎng)絡(luò)文章點(diǎn)擊這里進(jìn)入
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蚁袭,一起剝皮案震驚了整個(gè)濱河市征懈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌揩悄,老刑警劉巖卖哎,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異删性,居然都是意外死亡亏娜,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門蹬挺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)维贺,“玉大人,你說(shuō)我怎么就攤上這事巴帮∷萜” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵榕茧,是天一觀的道長(zhǎng)发乔。 經(jīng)常有香客問我,道長(zhǎng)雪猪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任起愈,我火速辦了婚禮只恨,結(jié)果婚禮上译仗,老公的妹妹穿的比我還像新娘。我一直安慰自己官觅,他們只是感情好纵菌,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著休涤,像睡著了一般咱圆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上功氨,一...
    開封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天序苏,我揣著相機(jī)與錄音,去河邊找鬼捷凄。 笑死忱详,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的跺涤。 我是一名探鬼主播匈睁,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼桶错!你這毒婦竟也來(lái)了航唆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤院刁,失蹤者是張志新(化名)和其女友劉穎糯钙,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體黎比,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡超营,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了阅虫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片演闭。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖颓帝,靈堂內(nèi)的尸體忽然破棺而出米碰,到底是詐尸還是另有隱情,我是刑警寧澤购城,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布吕座,位于F島的核電站,受9級(jí)特大地震影響瘪板,放射性物質(zhì)發(fā)生泄漏吴趴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一侮攀、第九天 我趴在偏房一處隱蔽的房頂上張望锣枝。 院中可真熱鬧厢拭,春花似錦、人聲如沸撇叁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)陨闹。三九已至楞捂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間趋厉,已是汗流浹背寨闹。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留觅廓,地道東北人鼻忠。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像杈绸,于是被迫代替她去往敵國(guó)和親帖蔓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 今天跟大家分享下RecyclerView怎么使它的條目自動(dòng)滾動(dòng) 其實(shí)做這個(gè)也是項(xiàng)目中有個(gè)需求需要用到瞳脓,但是在網(wǎng)上找...
    氹鹿閱讀 50,329評(píng)論 10 76
  • RecyclerView在我們的開發(fā)過(guò)程中已經(jīng)使用的不能再多了塑娇,開發(fā)過(guò)程中十分實(shí)用,并且使用簡(jiǎn)單劫侧,但我們使用Rec...
    ztzt123閱讀 1,891評(píng)論 0 0
  • RecyclerView向我們提供了若干個(gè)方法來(lái)進(jìn)行滾動(dòng):(1).scrollTo(int x, int y)Se...
    lxbnjupt閱讀 21,028評(píng)論 3 2
  • 三月里 杏花就是好天氣 五月到了 你是星星
    Xx山茶閱讀 284評(píng)論 0 0
  • 咳咳咳,最近我有一些喜歡的詩(shī)句审姓,比如: ①你站在橋上看風(fēng)景珍特,看風(fēng)景的人在樓上看你。明月裝飾了你的窗子魔吐,你裝飾了別人...
    艾零的奇異世界閱讀 1,760評(píng)論 0 1