0

我一直在研究由单个组件组成的自定义滚动条,因为提供的滚动条在其滚动的视图中存在严重的剪切问题。我绘制了轨道和拇指,并使用子类 GestureDetector.SimpleOnGestureListener,我让它在轨道中上下滚动。然而,我在计算数学时遇到了一些麻烦,让拇指不仅停留在轨道内,而且还反映了我们在视图中滚动了多远(也就是拥有滚动条的点哈哈)。

鉴于拇指总是从顶部开始,rv 是正在滚动的回收器视图,而 scrollTrack 是滚动条的轨道,我设置了这样的比率:

(rv.getScrollY() / rv.getMeasuredHeight()) = (scrollThumbYPos / scrollTrack.getMeasuredHeight())

留给我 scrollThumbYPos = (rv.getScrollY * scrollTrack.getMeasuredHeight) / rv.getMeasuredHeight()

我将这个想法实现为如下代码:

在此处输入图像描述

而且……卡住了。以前,拇指会无限向上或向下滚动,但现在它只是停留在原处。我认为这至少会将拇指绑定到轨道的边界(因为我不确定拇指在此处滚动视图的距离是否准确)但相反,它只是保持静止。我的数学是否有错误,或者我在代码中错误地实现了这个想法?为了达到这一点,我做了很多研究,但由于某种原因,很难找到任何人回答了这个关于轨道边界和当前视图位置到拇指位置的特定问题。

4

0 回答 0