任何关于实现如下图像的网格布局的想法。
具有不同高度项目的网格布局(React Native)
1
A
回答
1
答案取决于您要显示的数据。我想这是一个无限列表,它向下滚动加载更多的项目。如果是这样的话,你需要把3 ListView
-s内ScrollView
的标记看起来像这样:
<View style={styles.wrapper}>
<ScrollView contentContainerStyle={styles.container}>
<ListView
contentContainerStyle={styles.list}
dataSource={this.state.dataSourceColumn1}
/>
<ListView
contentContainerStyle={styles.list}
dataSource={this.state.dataSourceColumn2}
/>
<ListView
contentContainerStyle={styles.list}
dataSource={this.state.dataSourceColumn3}
/>
</ScrollView>
</View>
包装View
会帮助你伸展块,以适应整个地区。但从造型点,你可以用Flexbox的解决任务:
wrapper: {
flex: 1
},
container: {
flexDirection: 'row',
paddingHorizontal: 5
},
list: {
flex: 1,
flexDirection: 'column',
paddingVertical: 10,
paddingHorizontal: 5
}
诀窍是,我们对待每一个列在容器内一排。玩填充和alignItems
造型,以实现一致的间距。
现在棘手的部分是妥善处理dataSource
。这个想法是在组件状态下有3个dataSource
-s。通过这种方式,每当数据被提取时,您都必须手动将其分解为三个来源。
注意随附ListView
得心应手onEndReached
将不可用在这里,所以你必须抓住用户到达ScrollView
结束,以便在需要的时候取的新认识。但这是另一个我认为已经在其他地方得到回答的问题。
如果网格是有限的,你不需要投入更多的项目,事情更简单。只需按照上述方式拆分数据,并使用嵌套项目而不是ListView
-s即可使用3 View
-s。其原因在于ListView
提供了一种设置rowHasChanged
条件的方法,该条件通过永不呈现未更改的列表项目来提高性能。如果名单是有限的,你并不需要那么做。
相关问题
- 1. MaterializeCSS - 具有不同高度的网格布局
- 2. 柔性网格布局,具有柔性方向行和不同高度的行
- 3. React native SectionList布局
- 4. 使用流体基线网格不同网格高度的网格布局
- 5. 填充父项但具有相同高度的行的表格布局
- 6. React Native的布局问题
- 7. 在React Native中设置表格布局
- 8. 具有不同高度块的三列布局
- 9. 项目不能跨越网格布局
- 10. 在React-Native中可以更高效地实现此网格布局吗?
- 11. 如何有单元高度不同的网格布局组件在Unity
- 12. 具有相同高度和表格风格的流体布局div
- 13. css布局高度问题与网格类似的布局
- 14. React-native - 有条件地设置高度
- 15. 具有不同单元大小的Android网格布局
- 16. HTML网格布局具有不同的列每行
- 17. 产品网格,项目是不同的高度
- 18. 在现有的React Native iOS项目中安装React-Native Android?
- 19. 使工具栏具有网格布局
- 20. 为具有不同项目布局的ListView创建ViewHolders
- 21. Bootstrap - 列表项目的网格布局
- 22. 如何让我的布局具有相同高度的TableRows?
- 23. ImageView应该与右侧的布局具有相同的高度
- 24. 不同高度的流动框布局
- 25. 具有不同缩略图高度的自举网格
- 26. 如何让两个不同的布局具有相同的高度?
- 27. 具有不同高度的Android设备需要相同的布局文件夹
- 28. 全屏幕的Android布局与具有相同高度
- 29. 如何让布局具有相同的高度?
- 30. 电子邮件CSS - 项目的网格,具有不同的高度。 (没有JS,没有CSS3等)