解決 RecyclerView AppBarLayout 滑動不順暢的問題

問題

如果你又看過 cheesesquare 這個項(xiàng)目就知道,在詳情頁滑動的時候有一些粘性踩验,體驗(yàn)不是很好琴锭。
有人在YouTube上上傳了現(xiàn)象 視頻地址
stackoverflow上也有人討論這個問題,視頻也是在這個問題下面看到的厕九。
前段時間在項(xiàng)目用到 AppBarLayout 加 RecyclerView的時候地回,產(chǎn)品經(jīng)理和設(shè)計(jì)師對這個效果都不滿意俊鱼。
so....只能填坑了畅买。

初步解決

stackoverflow 上也有提及這個問題主要是由于 consumed 有時候在 onNestedFling 中計(jì)算不對導(dǎo)致的。
因此可以重寫AppBarLayout的Behavior
這個答案可以解決這個問題 http://stackoverflow.com/a/32454407
當(dāng)然記得在xml 為 AppBarLayout 設(shè)置上自定義的Behavior

更進(jìn)一步解決

還有一種情況可能體驗(yàn)不是很好帝火,就是在 往上 fling 的時候湃缎,AppBarLayout沒有拉下來,需要在拉一次才能下來九巡,那時產(chǎn)品經(jīng)理對這個也不是很滿意蹂季。
這種情況下 consumed 的值為 true 即時經(jīng)過修正之后也是為 true ,然后在看
super.onNestedFling 源碼 發(fā)現(xiàn)這時候也是不會調(diào)用 fling 的撒汉。事實(shí)上大部分這時候 AppBarLayout 不去fling也是對的父能,因?yàn)檫@時候 AppBarLayout 應(yīng)該在可見的視圖之外何吝。
于是后來打算去監(jiān)聽 RecyclerView的滾動鹃唯,在滾動到第一條的時候展開 AppBarLayout,發(fā)現(xiàn)效果還不錯

list.addOnScrollListener(new RecyclerView.OnScrollListener() {
     @Override    
     public void onScrollStateChanged(RecyclerView recyclerView, int newState) {        
        super.onScrollStateChanged(recyclerView, newState);        
        if (newState == RecyclerView.SCROLL_STATE_IDLE) {            
        int firstVisiblePosition = layoutManager.findFirstCompletelyVisibleItemPosition();            
        if (firstVisiblePosition == 0) {
           appbar.setExpanded(true, true);            
        }        
     }    
}});

這時候滾動到頂部的時候黔酥,RecyclerView 有個波紋效果洪橘,導(dǎo)致看起來比較別扭,
給 RecyclerView 設(shè)置以下屬性即可

android:overScrollMode="never"

其他方案

github 上有個庫也是解決這個問題的 smooth-app-bar-layout
當(dāng)然解決的原理跟本文相差甚遠(yuǎn)渣玲,有興趣可以閱讀下弟晚,我自己也有用過逾苫,不過這個庫比較蛋疼的就是得為RecyclerView 設(shè)置一個 head item铅搓, 這個 item 的高度必須跟 AppBarLayout 一樣的高度搀捷,所以對于 wrap_content 就比較麻煩了,當(dāng)然嫩舟,這個跟這個庫的實(shí)現(xiàn)思路有關(guān)系至壤。

最后,希望本文能給準(zhǔn)備入坑的同學(xué)少走一點(diǎn)彎路

ps (我目前用的最新 support 包 26.1.0 版本 已經(jīng)基本修復(fù)這個問題)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末黎棠,一起剝皮案震驚了整個濱河市镰绎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌随静,老刑警劉巖吗讶,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件照皆,死亡現(xiàn)場離奇詭異,居然都是意外死亡膜毁,警方通過查閱死者的電腦和手機(jī)瘟滨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來倒淫,“玉大人胧沫,你說我怎么就攤上這事占业∏玻” “怎么了犬金?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長峰伙。 經(jīng)常有香客問我该默,道長,這世上最難降的妖魔是什么匣摘? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任音榜,我火速辦了婚禮捧弃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘嘴办。我一直安慰自己葛家,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著刃榨,像睡著了一般枢希。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上苞轿,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天,我揣著相機(jī)與錄音翎卓,去河邊找鬼摆寄。 笑死,一個胖子當(dāng)著我的面吹牛逗扒,可吹牛的內(nèi)容都是我干的欠橘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼肃续,長吁一口氣:“原來是場噩夢啊……” “哼黍檩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起痹升,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤建炫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后疼蛾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肛跌,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年察郁,在試婚紗的時候發(fā)現(xiàn)自己被綠了衍慎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡皮钠,死狀恐怖稳捆,靈堂內(nèi)的尸體忽然破棺而出麦轰,到底是詐尸還是另有隱情乔夯,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布款侵,位于F島的核電站末荐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏新锈。R本人自食惡果不足惜甲脏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧块请,春花似錦娜氏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至抖棘,卻和暖如春茂腥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背切省。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工最岗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人朝捆。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓般渡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親芙盘。 傳聞我的和親對象是個殘疾皇子驯用,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評論 2 354

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