【发布时间】:2021-05-17 06:32:11
【问题描述】:
我在 ScrollView 中有一个 GridLayout。 GridLayout 包含大约 25 个图像。图像是在运行时选择的,因此无法事先确定它们的大小。这些图像在不同时间异步加载(它们之间至少有 500 毫秒的差异)。
当图片加载完毕,GridLayout 的大小发生变化时,就会出现这个问题。据我了解,ScrollView 的scroll_y 设置为相对于GridLayout 的原始高度的某个值。然后,一旦图像加载,GridLayout 的大小就会发生变化,但 scroll_y 仍然相对于旧高度。这会导致 ScrollView 向下滚动很多。
我已尝试通过手动更改 scroll_y 以匹配新高度来纠正此问题。我正在使用以下等式:
Equation for Finding New Scroll_Y
我正在从 1 中减去 scroll_y,因为滚动值 1 位于 kivy 的最顶端。我已将此等式重新排序为以下内容并在代码中实现了这一点:
Simplified Equation for Finding New Scroll_Y
这减少了问题,并且抖动不太明显,但每次加载图像时它仍然向上滚动 5-10 像素。
这是因为我正在计算方程式的新高度,基于:
- ScrollView 的旧视口高度
- 图像小部件的旧高度
- 图片的新高度。
但是,这个计算出的高度比实际高度略大,导致我调整后的scroll_y 略有偏差。我不确定为什么实际高度更小。
我不知道从这里去哪里。
这里是一个存储库的链接,其中包含一个最小的可重现示例。 Grid Stuttering Example
【问题讨论】:
-
如果不提供minimal reproducible example,您不可能就此类问题获得任何帮助。
-
抱歉,我编辑了我的问题以包含一个。