android - FlatList在水平模式(RTL)下数据太大时自动滚动到第一
问题描述
环境
System:
OS: Windows 10
CPU: (4) x64 Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz
Memory: 1.35 GB / 7.87 GB
Binaries:
Node: 10.15.3 - C:\Program Files\nodejs\node.EXE
Yarn: 1.17.3 - C:\Program Files (x86)\Yarn\bin\yarn.CMD
npm: 6.4.1 - C:\Program Files\nodejs\npm.CMD
IDEs:
Android Studio: Version 3.5.0.0 AI-191.8026.42.35.5791312
反应原生版本:0.60.4
代码
<FlatList
style={{
flexDirection: 'row',
marginHorizontal: -wp('3%'),
zIndex: 40
}}
initialNumToRender={10}
data={this.state.data}
horizontal={true}
key={item => item.groupNo}
keyExtractor={(item, index) => index.toString()}
showsHorizontalScrollIndicator={false}
showsVerticalScrollIndicator={false}
ref={ref => (this.flatList = ref)}
renderItem={({ item }) => (
<Item item={item} />
)}
/>
重现步骤
- 向我的 FlatList 添加了一些数据
- 将 Horizontal={true} 属性添加到平面列表
- 放
I18nManager.allowRTL(true)
- 放
I18nManager.forceRTL(true)
- 让我的 renderItem 组件扩展为 PureComponent。
- 使用真正的安卓设备
正如您在下面看到的,当我的应用程序在 RTL 方向上运行时会FlatList
自动滚动到列表的顶部/第一个,但 LTR 方向是可以的!
右转:
长期运输:
解决方案
我也有同样的这个问题,我的解决方案(你将它们添加到你的平面列表中)。希望能帮到你。此链接可能会帮助您改进您的列表: https ://github.com/filipemerker/flatlist-performance-tips
getItemLayout={(data, index) => (
{ length: LECTURE_ITEM_HEIGHT, offset: LECTURE_ITEM_HEIGHT * index, index }
)}
maxToRenderPerBatch={20}
initialNumToRender={10}
windowSize={10}
removeClippedSubviews={true}
推荐阅读
- google-cloud-platform - terraform GCP http(s) 负载均衡器
- javascript - 快速写入 TXT 文件的方法?
- python - Tkinter 没有响应并且按钮冻结?
- swift - 带有标签背景颜色的动态标签宽度
- testing - 当您有足够大的样本量时,是否有必要进行交叉验证?
- vuejs2 - Vue2-datepicker 将数组输出分离到 v-models
- spring - 如何合并动态 Mono 返回方法
- python - 按第一个元素然后第一个和第二个元素等迭代列表
- android-sqlite - sql根据另一行值和用户输入的比较选择单行项目
- android - Android Studio:Google API 找不到 credentials.json