6

在此处输入图像描述

所以对于上面的图像,我试图让“绿色”框环绕动态文本。注意蓝色和黄色文本框是如何flex: 'row'配置的,蓝色文本框位于 a 处flex: 2,黄色位于flex: 1.

在文本对于父容器来说太大之前,一切正常。

我希望绿色容器根据需要生长以适应弯曲的内在孩子。这可能与本机反应吗?

这是它在网络意义上的样子:

在此处输入图像描述

我尝试将绿色框设置为有一个flex: 1,但它太大了,因为它填满了整个屏幕。设置height是可能的,但我不知道最大内部组件的大小(至少没有一些黑客)。我什至试过了minHeight

有没有人尝试过这样的事情?我需要自己动态获取内部元素的高度吗?

更新 - 这是一段代码:

  <View style={{ flex: 1, flexDirection: 'column', marginTop: 70, backgroundColor: '#f9e2ff' }}>
    <View
      style={{
        minHeight: 40,
        borderWidth: 1,
        borderStyle: 'solid',
        padding: 5,
        margin: 5,
        backgroundColor: '#58c09e'
      }}
    >
      <View style={{ flex: 1, flexDirection: 'row' }}>
        <View style={{ flex: 2, backgroundColor: '#eeff96' }}>
          <Text>
            Hello this is a long bit of text that will fill up the entire column to see how the text will wrap
          </Text>
        </View>
        <View style={{ flex: 1, backgroundColor: '#eeffff' }}>
          <Text>Hello again?</Text>
        </View>
      </View>
    </View>
  </View>

感谢您的关注。

4

2 回答 2

9

好吧,在环顾四周并阅读后:flex vs flexGrow vs flexShrink vs flexBasis in React Native?我能够找出问题所在。

我需要的是flex: 0在行:

  <View style={{ flex: 1, flexDirection: 'column', marginTop: 70, backgroundColor: '#f9e2ff' }}>
    <View
      style={{
        minHeight: 40,
        borderWidth: 1,
        borderStyle: 'solid',
        padding: 5,
        margin: 5,
        backgroundColor: '#58c09e'
      }}
    >
      <View style={{ flex: 0, flexDirection: 'row' }}>
        <View style={{ flex: 2, backgroundColor: '#eeff96' }}>
          <Text>
            Hello this is a long bit of text that will fill up the entire column to see how the text will wrap
          </Text>
        </View>
        <View style={{ flex: 1, backgroundColor: '#eeffff' }}>
          <Text>Hello again?</Text>
        </View>
      </View>
      <View>
        <Text>Here's another test</Text>
      </View>
    </View>
  </View>

这产生了我所期望的:

在此处输入图像描述

所以我猜 flexbox 不像他们在文档中所说的那样“在 React Native 中的工作方式与在 Web 上的 CSS 中的工作方式相同”。

于 2017-07-25T15:11:34.287 回答
-1

试试这个代码 -->

<View style={{flex:1,flexDirection:'row',borderWidth:1,padding:5}}>
  <View style={{flex:0.7}}>
      <Text>
            Hello This is long bit of text that will fill up the entire 
            column to see how the text will wrap
      </Text>
  </View>

  <View style={{flex:0.3}}>
      <Text>Hello Again</Text>
  </View>

</View>
于 2017-07-25T05:07:27.613 回答