Flatlist scrollToIndex在iOS上生成空格

时间:2018-04-24 00:06:23

标签: react-native

我正在处理的应用程序的设计根据设备的宽度更改布局,并且有一个Flatlist组件在所选项目上调用scrollToIndex,这样它就不会掉出来应用程序更改其布局时视图的一侧。如果选择了最后一个项目并且调用了scrolltToIndex,则在iOS上它会将项目一直滚动到顶部并隐藏其上方的所有项目。这使它看起来像是剩下的唯一项目,并且带回其他项目的唯一方法是手动下拉列表。在Android上它完美地工作,即它只会滚动一个足够高的项目以尽可能多地容纳它下面的项目(如果超过容器的高度,它只是将其滚动到顶部)。

1 个答案:

答案 0 :(得分:0)

来自FlatList>ScrollToIndex文档:

  

注意:如果不指定getItemLayout道具,则无法滚动到渲染窗口之外的位置。

因为FlatList是虚拟化(即因为它不会在屏幕外渲染完整列表而高效),所以它不知道所有元素的位置(因为它们不是预先渲染的,因此它们的大小未知)。它需要您通过getItemLayout提供元素大小来帮助滚动超出可见的范围。我怀疑“近乎可见”可能会因设备设置不同而设备不同。如果你不这样做,你可能会在列表中留下空白,因为确切的位置是未知的。

因此,您需要实现getItemLayout或使用性能较低(并且已删除)ListView组件。