RecyclerView滑动到指定位置,并置顶
一般我們用 mRecycleview.smoothScrollToPosition(0)滑動(dòng)到頂部,具有滾動(dòng)效果,但是如果我們想滾動(dòng)到任意指定位置,那么smoothScrollToPosition()就不能保證所指定item位于屏幕頂部,那么一下提供下我解決的方法:
1.第一種方法
此方法能實(shí)現(xiàn)指定位置位于屏幕頂部,但是不具有平滑滾動(dòng)視覺效果:
if (position != -1) {mRecycleview.scrollToPosition(position);LinearLayoutManager mLayoutManager =(LinearLayoutManager) mRecycleview.getLayoutManager();這里的LinearLayoutManager對(duì)象只能是動(dòng)態(tài)獲取,不能用全局的。 mLayoutManager.scrollToPositionWithOffset(position, 0); }2.第二種方法
此方法能實(shí)現(xiàn)指定位置位于屏幕頂部,具有平滑滾動(dòng)視覺效果:
首先獲取第一個(gè)可見位置和最后一個(gè)可見位置,分三種情況:
1.如果如果跳轉(zhuǎn)位置在第一個(gè)可見位置之前,就smoothScrollToPosition()可以直接跳轉(zhuǎn);?
2.如果跳轉(zhuǎn)位置在第一個(gè)可見項(xiàng)之后,最后一個(gè)可見項(xiàng)之前smoothScrollToPosition()不會(huì)滾動(dòng),此時(shí)調(diào)用smoothScrollBy來滑動(dòng)到指定位置;?
3.如果要跳轉(zhuǎn)的位置在最后可見項(xiàng)之后,則先調(diào)用smoothScrollToPosition()將要跳轉(zhuǎn)的位置滾動(dòng)到可見位置,在addOnScrollListener()里通過onScrollStateChanged控制,調(diào)用smoothMoveToPosition,再次執(zhí)行判斷;
改文章出自:https://blog.csdn.net/shanshan_1117/article/details/78780137
特此感謝!
轉(zhuǎn)載于:https://www.cnblogs.com/qynprime/p/9284841.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的RecyclerView滑动到指定位置,并置顶的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 阻隔返回键
- 下一篇: 听得我都激动了……喝死奥巴马,你怎么看?