具有不同高度项目的网格布局(React Native)

2024-02-14

Any idea for implementing a grid layout like the following image.
enter image description here


答案取决于您要显示的数据。我想这是一个无限列表,向下滚动时会加载更多项目。如果是这种情况,你需要输入 3ListView-s 在 a 内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>

Wrapper View将帮助您拉伸块以适合整个区域。从样式的角度来看,您可以使用 Flexbox 来解决该任务:

wrapper: {
    flex: 1
},
container: {
    flexDirection: 'row',
    paddingHorizontal: 5
},
list: {
    flex: 1,
    flexDirection: 'column',
    paddingVertical: 10,
    paddingHorizontal: 5
}

诀窍是我们将每一列视为容器内的一行。尝试使用填充物和alignItems样式以实现一致的间距。

现在棘手的部分是处理dataSource适当地。这个想法是有 3dataSource-s 处于组件状态。这样,每当获取数据时,您都必须手动检查它并将其分为三个源。

请注意,方便onEndReached附带的ListView此处不可用,因此您必须捕获用户到达末尾ScrollView为了知道何时需要新的获取。但这是一个不同的问题,我相信已经在其他地方得到了回答。

如果网格是有限的,并且您不需要向其中放入更多项目,那么事情会更简单。只需按照上述方式分割数据并使用 3View-s 带有嵌套项目而不是ListView-s。其背后的原因是ListView带有一种设置方法rowHasChanged条件,它通过从不渲染未更改的列表项来提高性能。如果列表是有限的,你实际上并不需要它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有不同高度项目的网格布局(React Native) 的相关文章

  • React Native Android:app:compileDebugJava 错误

    当我运行react native run android时 出现以下错误 我正在将其设置为在设备上运行 app compileDebugJava Users hello MediaFire apps test2 android app sr
  • 将 React Native 集成到 Xamarin 项目中

    我的任务是看看是否可以将 React Native 集成到 Xamarin Forms 项目中 我认为我已经非常接近实现这一目标 但我不能肯定地说 我知道这是一个有点奇怪 倒退的解决方案 但无论如何我想尝试一下 看看我是否可以打败它 Int
  • 选择哪一个react-native-router-flux或react-router-native或react-navigation [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我是反应本机的初学者 正在尝试实现重定向 并在验证登录后路由到另一个页面 等 我应该选择哪一个react native router flux或
  • 如何使用反应导航在导航抽屉中添加部分分隔符

    假设我的抽屉导航中有五个项目 我想在三个项目之后添加分隔符 如何使用反应导航添加它 正如提到的 vonovak 你可以通过使用来实现这一点contentComponent允许完全定制抽屉 为此 您需要创建自定义组件来覆盖默认抽屉 代码示例
  • 如何在应用程序关闭时在 Android 通知中显示操作按钮?

    我有一个安卓应用程序 对于通知 我们必须显示一些操作按钮 当应用程序打开时 我们可以自由地构建通知并显示操作按钮 但是当应用程序关闭时 通知会在 Android 的通知托盘中收到 应用程序开发人员无法控制构建用户界面和操作按钮 我们现在如何
  • React:搜索过滤器无法正常工作

    我通过 API 从服务器获取记录 API 是在 Loopback 中构建的 实际上 我在每个页面上显示 5 条记录 目前工作正常 我可以导航next or prev通过分页按钮 每页显示 5 条记录 问题是 当用户在搜索框中键入内容时 记录
  • 从本机代码访问 AsyncStorage

    我需要使用 JS 代码中的 AsyncStorage 将数据保存在本地存储中 我想知道是否有一种方法可以从本机代码 Objective C 或 Java 访问 AsyncStorage 存储的数据 Thanks 如果你导入RCTAsyncL
  • Android 上的 React Native:无法运行程序“node”:错误=2,没有这样的文件或目录

    编辑 我不确定我采取了哪些步骤来解决此问题 并且不再看到此错误消息 因此我无法测试下面的解决方案 请单独尝试 因为不同的答案似乎适用于不同的人 iOS 版本工作正常 但在我的 Mac 上运行 Android Studio 时出现以下 Gra
  • 纯组件在没有变化时渲染?

    我有一个像这样的纯组件 interface Props checkBoxTitleStyle any checkBoxBackgroundColor any onPressCheckBox id isChecked selectedArra
  • 单击通知时反应本机导航到特定屏幕

    我正在尝试在用户单击他们收到的通知时实现导航 我已成功收到通知expo notifications并接受来自 API 的数据 路由 但当用户单击通知时无法导航到另一个屏幕 使用通知 export default useNotificatio
  • React Native 构建成功,但“没有启动任何设备。”

    这是我的环境 AwesomeProject node version v6 3 0 AwesomeProject npm version 3 10 3 AwesomeProject react native version react na
  • 有没有办法限制 React-Native 中 TextInput 的长度?

    我一直在尝试使我的程序不允许您在 TextInput 组件中输入超过一定数量的字符 类似于 maxLength 对于输入的工作方式 我还没有找到任何类似的 textInput 的 maxLength 有没有一种简单的方法来设置 组件的最大字
  • React Native:约束 Animated.Value

    我正在制作一个 React Native 应用程序 场景是这样的 我希望用户能够平移视图 但不完全按照他想要的方式 我想约束视图被拖动时可以移动的距离由用户 我已经阅读了两者的文档PanResponder and AnimatedAPI 多
  • 在 Android 上获取一个滚动到 GridView 底部视图的按钮

    我正在尝试将现有的 iPhone 应用程序移植到 Android 我希望有一个按钮滚动到 GridView 底部的视图中 以使用户能够从服务器加载更多数据 目前 我的解决方案只是修复屏幕底部的一个按钮 而不是让它滚动到视图中 这是我的布局代
  • 使用 Fetch 发生超时错误 - React Native

    我有一个正在运行的用户登录功能 但是 我想在获取时加入超时错误 有没有办法设置一个 5 秒左右的计时器 这样在这个时间之后就会停止尝试获取 否则 一段时间后我就会出现红屏 提示网络错误 userLogin var value this re
  • React-Native 中的导航抽屉

    我是反应原生的新手 不介意我问一个基本问题 我想知道 实现抽屉式导航的分步过程是什么 推荐链接这个链接 https github com react native community react native side menu usage
  • Horizo​​ntalScrollView 将 GridView 缩小为小行

    当我将 Horizo ntalScrollView 放在 GridView 周围时 GridView 会被压缩到左侧的一个小列中 Gridview 的垂直滚动条甚至出现在左侧 Horizo ntalScrollView 的宽度设置为 fil
  • 使用 React Native 在手机上搜索音频文件

    我正在使用 React Native 开发音乐应用程序 但我一直在努力找出搜索和播放已保存在客户端手机上的音频文件的最佳方法 我只是不确定解决这个问题的最佳模块 库是什么 或者 iOS Android 操作系统是否允许这种类型的用户文件访问
  • 将 async 和await 与export const 一起使用

    我无法完成这项工作 它说 await 是一个保留字 是的 当然是 而且我想使用它 怎么了 export const loginWithToken async gt return dispatch gt dispatch type SESSI
  • 我在 Facebook 上的“access_token”是“不正确的值”

    我正在使用 django rest auth 它是 Django all auth 的 API 扩展 我正在构建一个可以使用 Facebook 令牌注册 登录的移动应用程序 网址 http localhost 8000 rest auth

随机推荐