問題:
一般來說我們會(huì)使用RecyclerView的smoothScrollToPosition(int position) 方法來實(shí)現(xiàn)自動(dòng)滾動(dòng),但是這個(gè)方法最大的問題就是,一旦目標(biāo)position的item出現(xiàn)在屏幕中,列表就不會(huì)繼續(xù)滾動(dòng),這也就造成了一種“BUG”:如果目標(biāo)position的item原本處于列表下方,且沒有在屏幕中出現(xiàn),調(diào)用smoothScrollToPosition(int position)方法,會(huì)導(dǎo)致目標(biāo)position的item滑動(dòng)到屏幕下方最后一個(gè)可見位置的時(shí)候就停止滑動(dòng),在大多數(shù)需求中,這并不是我們想要的效果。
解決:
這是在StackOverflow上找到的解決辦法:
RecyclerView.SmoothScrollersmoothScroller =?newLinearSmoothScroller(this){
@Override
protected intgetVerticalSnapPreference() {
????????returnLinearSmoothScroller.SNAP_TO_START;
? ? }
};
LinearLayoutManager mManager = new?LinearLayoutManager(context);
smoothScroller.setTargetPosition(position);
mManager.startSmoothScroll(smoothScroller);