Flex React Native - 当内容到达边缘时如何让内容中断到下一行

Posted

技术标签:

【中文标题】Flex React Native - 当内容到达边缘时如何让内容中断到下一行【英文标题】:Flex React Native -- How to have content break to next line with flex when content reaches edge 【发布时间】:2016-04-13 21:34:15 【问题描述】:

我的样式容器中有一个图标列表,这些图标显示在flexDirection:'row' 中,但是当图标数量超过视图宽度时,它们不会中断到下一行,而是继续向右看。如果内容达到最大宽度,如何让内容中断到下一行?

样式:

var styles = StyleSheet.create(
  container: 
    width: SCREEN_WIDTH, //width of screen
    flexDirection:'row',
    backgroundColor: 'transparent',
    marginTop:40,
    paddingLeft:10,
    paddingRight:10,
    flex: 1,
  ,
  iconText:
    paddingLeft:10,
    paddingRight:10,
    paddingTop:10,
    paddingBottom:10
  ,
);

渲染:

<View style=styles.container>

      <TouchableHighlight
        onPress=() => this.changeIcon(indexToChange, icons[0])
        underlayColor='#F7F7F7'>
          <Text style=styles.iconText><IonIcons name=icons[0] size=30 color="#555" /></Text>
      </TouchableHighlight>

      <TouchableHighlight
        onPress=() => this.changeIcon(indexToChange, icons[1])
        underlayColor='#F7F7F7'>
          <Text style=styles.iconText><IonIcons name=icons[1] size=30 color="#555" /></Text>
      </TouchableHighlight>

      <TouchableHighlight
        onPress=() => this.changeIcon(indexToChange, icons[2])
        underlayColor='#F7F7F7'>
          <Text style=styles.iconText><IonIcons name=icons[2] size=30 color="#555" /></Text>
      </TouchableHighlight>

      ...//more continued on

</View>

当图标到达右侧的宽度时,它们不会中断到底部。这可能吗?

【问题讨论】:

【参考方案1】:

就我而言,我只需将flex-shrink: 1flexShrink: 1 添加到我想要包装的Text 组件的父级

我不需要 align-items: flex-startflex-wrap: wrap 等,也不需要从中受益。同样,这可能只是我的用例,但这对我有用。

【讨论】:

【参考方案2】:

您可以将flexWrap: 'wrap'alignItems: flex-start(或stretch 以外的任何内容添加到您的容器样式中。

如果您不指定align-items 或设置align-items: stretch,则第一行中的每一列将占据尽可能高的高度,将第二行推到下方,类似于下面的屏幕截图:

【讨论】:

右边的内容现在是隐藏的。它并没有结束。我需要为每一行创建一个新的 flex 容器吗? @Chipe 例如,您可以添加align-items: flex-start,它应该可以按您的意愿工作。我编辑了我的答案。 非常感谢,成功了!有没有你推荐的学习 flex 的参考资料和教程? @Chipe For html 我推荐 css-tricks.com/snippets/css/a-guide-to-flexbox 和 flexboxfroggy.com react-native 中的 Flexboxes 与 html flexboxes 非常相似

以上是关于Flex React Native - 当内容到达边缘时如何让内容中断到下一行的主要内容,如果未能解决你的问题,请参考以下文章

React Native知识1-FlexBox 布局内容

当我们到达列表底部时,React Native FlatList 加载更多

当通知到达并且应用程序在后台没有用户交互时,如何在 React Native 中执行操作?

React Native 之 Flex

React native Flex Direction学习笔记

React native Flex Direction学习笔记