我正在处理的应用程序的设计根据设备的宽度更改布局,并且有一个Flatlist
组件在所选项目上调用scrollToIndex
,这样它就不会掉出来应用程序更改其布局时视图的一侧。如果选择了最后一个项目并且调用了scrolltToIndex
,则在iOS上它会将项目一直滚动到顶部并隐藏其上方的所有项目。这使它看起来像是剩下的唯一项目,并且带回其他项目的唯一方法是手动下拉列表。在Android上它完美地工作,即它只会滚动一个足够高的项目以尽可能多地容纳它下面的项目(如果超过容器的高度,它只是将其滚动到顶部)。
答案 0 :(得分:0)
注意:如果不指定getItemLayout道具,则无法滚动到渲染窗口之外的位置。
因为FlatList是虚拟化(即因为它不会在屏幕外渲染完整列表而高效),所以它不知道所有元素的位置(因为它们不是预先渲染的,因此它们的大小未知)。它需要您通过getItemLayout
提供元素大小来帮助滚动超出可见的范围。我怀疑“近乎可见”可能会因设备设置不同而设备不同。如果你不这样做,你可能会在列表中留下空白,因为确切的位置是未知的。
因此,您需要实现getItemLayout
或使用性能较低(并且已删除)ListView
组件。