AndroidRecyclerViewLinearSmoothScrollerBUG-即使指定了要滚动到其他位置,它也会滚动到末尾
创始人
2024-10-09 17:32:27
0

在使用 LinearSmoothScroller 滚动 RecyclerView 时,出现这种问题是因为在其 computeScrollVectorForPosition() 方法中返回的向量不正确。所以我们需要重写该方法,以正确指示滚动方向。

下面是一个示例代码,可以在你的 RecyclerView.SmoothScroller 中调用,并返回正确的滚动向量:

public class CustomLinearSmoothScroller extends LinearSmoothScroller {  
    public CustomLinearSmoothScroller(Context context) {  
        super(context);  
    }  
  
    @Override  
    public PointF computeScrollVectorForPosition(int targetPosition) {  
        final int firstChildPos = getFirstChildPosition();  
  
        int direction = targetPosition < firstChildPos ? -1 : 1;  
        return new PointF(0, direction);  
    }  
  
    private int getFirstChildPosition(){  
        RecyclerView.LayoutManager layoutManager = getLayoutManager();  
  
        if (layoutManager == null || layoutManager.getChildCount() == 0) {  
            return RecyclerView.NO_POSITION;  
        }  
  
        View child = layoutManager.getChildAt(0);  
        return layoutManager.getPosition(child);  
    }  
}  

在你的 RecyclerView 中调用如下:

CustomLinearSmoothScroller scroller = new CustomLinearSmoothScroller(context);
scroller.setTargetPosition(targetPosition);
layoutManager.startSmoothScroll(scroller);

相关内容

热门资讯

备受关注的!微乐小程序黑科技,... 备受关注的!微乐小程序黑科技,微乐小程序辅助教程(透视)真是是真的挂(哔哩哔哩)微乐小程序辅助教程是...
5分钟神器!微乐小程序黑科技,... 5分钟神器!微乐小程序黑科技,微乐春天扑克开挂辅助插件(开挂)果然存在有挂(2026)5分钟神器!微...
透视辅助!微乐小程序免费黑科技... 透视辅助!微乐小程序免费黑科技,微乐贵阳麻将辅助(透视)竟然真的有挂(哔哩哔哩)1、玩家可以在微乐小...
第1分钟教程!微乐小程序黑科技... 第1分钟教程!微乐小程序黑科技,微乐自建房免费黑科技下载苹果(开挂)切实是真的挂(2026)1)微乐...
经调查!微乐小程序黑科技,微乐... 经调查!微乐小程序黑科技,微乐小程序免费黑科技(透视)一贯真的是有挂(哔哩哔哩)1)微乐小程序免费黑...
4分钟脚本!微乐小程序免费黑科... 4分钟脚本!微乐小程序免费黑科技,微信小程序怎么开挂(开挂)本来真的是有挂(2026)微乐小程序免费...
网友热议!微乐小程序黑科技,微... 网友热议!微乐小程序黑科技,微乐自建房辅助软件(透视)切实真的是有挂(哔哩哔哩)1、游戏颠覆性的策略...
第一分钟教程!微乐小程序黑科技... 第一分钟教程!微乐小程序黑科技,微乐自建房辅助多少钱一个月(开挂)竟然有挂(2026)1、第一分钟教...
透视讲解!微乐小程序免费黑科技... 透视讲解!微乐小程序免费黑科技,微乐家乡麻辣自建房辅助app(透视)本来存在有挂(哔哩哔哩)1、超多...
四分钟教程!微乐小程序免费黑科... 四分钟教程!微乐小程序免费黑科技,微信微乐辅助器使用教程(开挂)总是真的是有挂(2026)1、微乐小...