【发布时间】:2020-05-08 07:20:14
【问题描述】:
我试图了解为什么以下布局的工作方式不同。
有人可以根据规则解释内部布局过程是如何发生的吗?以及为什么下面的示例表现不同。除了只是说它是这样的。
示例 1:
return (
<View style = {{borderWidth : 1, borderColor : 'red'}}>
<View style = {{borderWidth : 1, borderColor : 'black'}}>
<Text>TestText</Text>
</View>
</View>
)
这会在文本周围呈现黑色框周围的红色框。这意味着 View 根据其内容调整大小。内部视图调整大小以考虑文本,外部视图考虑内部视图(已经考虑内部文本来确定其尺寸),因此一切都符合预期。
示例2:
return (
<View style = {{borderWidth : 1, borderColor : 'red'}}>
<View style = {{flex:1,borderWidth : 1, borderColor : 'black'}}>
<Text>TestText</Text>
</View>
</View>
)
文本现在位于两个视图之外。不过,内部视图仍然位于外部视图内部。
现在我尝试了一些不同的变化:
示例 3:
return <View style = {{borderWidth:1, borderColor:'red', height:10}}>
<View style = {{flex:1, borderWidth:1, borderColor:'black'}}>
<Text>HelloWorld</Text>
</View>
</View>
这个渲染得好一点,即文本至少似乎在两个视图内开始。但仍然不如预期。
我的问题:
1) 在上述情况 #2 中,为什么文本会在两个视图之外流动?而内部视图仍然停留在外部?
某些内容是否可以超出其父视图的范围?只要我们没有为它提供特定的尺寸,父视图不应该扩展以包含它吗?
2)在情况 #3 中,事情的表现有点像预期的那样。文本在视图内部,但仍然溢出。
3)这种渲染在 ReactNative 内部是如何发生的?它如何确定上面这些视图的有效高度?
【问题讨论】:
标签: css react-native layout flexbox