假设我有一个固定高度的画布和一个垂直滚动条。画布在垂直线上有10个孩子(如VBox),其组合高度超过画布的高度。根据滚动条位置,一次只能看到一些孩子。
是否可以确定哪些孩子实际可见?或者是否在屏幕上显示特定的孩子?
答案 0 :(得分:1)
我不确定此答案的及时性,但最近我遇到了类似的问题,以下代码对我有用:
if (item.y < container.verticalScrollPosition || item.y + item.height - container.verticalScrollPosition > container.height) {
// item is not (completely) visible
}
基本上这是检查以下标准:
1)项目的y位置是否位于容器当前垂直滚动位置之上(即容器顶部边界之外)?
2)项目的底部位置是否滚动到容器的底部边界之外?这是使用项目的底部位置(即项目的y位置加上其高度)减去当前的垂直滚动位置来计算的。
如果要检查容器中的所有项目,则必须循环访问并根据这些条件检查每个项目。您可以在函数中抛出上述代码,并返回该项是否可见。可能有更好/更清洁的方式,但我还没找到。