React Native弹力行项目?

时间:2018-06-14 08:39:01

标签: react-native styling

我必须在视图中彼此相邻的按钮 出于某种原因,即使我将View设置为alignItems:' stretch'或设置项目alignSelf:' stretch'他们不会用尽可用空间。我怎么能解决这个问题?

例如:

<View style={{flexDirection: 'row', alignItems: 'stretch'}}>
    <View style={{backgroundColor: 'red', height: 100}}/>
    <View style={{backgroundColor: 'blue', height: 100}}/>
</View>

视图不会拉伸,内部元素将保持宽度:0

或与Button项目相同:

<View style={{flexDirection: 'row', alignItems: 'stretch'}}>
    <Button title='text' style={{backgroundColor: 'red', 
    height: 100}}/>
    <Button title='text' style={{backgroundColor: 'blue', 
    height: 100}}/>
</View>

4 个答案:

答案 0 :(得分:0)

您需要为主视图提供宽度。所以你可以根据它设置按钮。此外,您需要为每个按钮设置 flex

<View style={{flexDirection: 'row', width:'100%, flex:1}}>
    <Button title='text' style={{backgroundColor: 'red', 
    height: 100, flex:1}}/>
    <Button title='text' style={{backgroundColor: 'blue', 
    height: 100, flex:1}}/>
</View>

答案 1 :(得分:0)

我只是意识到你正在使用alignItems,而你应该使用justifyContent在主轴上展开你的项目(在你的情况下是水平的)。 Stretch不是justifyContent的选项,因此您可以选择空格或空格均匀,例如:

<View style={{flex: 1, flexDirection: 'row', justifyContent: 'space-between'}}>
    <View style={{backgroundColor: 'red', height: 100}}/>
    <View style={{backgroundColor: 'blue', height: 100}}/>
</View>

答案 2 :(得分:0)

您必须将按钮包装在额外的 View 组件中:

<View style={{flexDirection: "row"}}>
    <View style = {{flex: 1}}>
        <Button title="Button 1" />
    </View>
    <View style = {{flex: 1}}>
       <Button title="Button 2" />
    </View>
</View>

或者将 Text 组件与 TouchableOpacity 一起使用:

<View style={{ flexDirection: "row"}}>
    <TouchableOpacity style = {{width: "50%"}}>
        <Text style={{textAlign:"center"}} > Button 1 </Text>
    </TouchableOpacity>
    <TouchableOpacity style = {{width: "50%"}}>
        <Text style={{textAlign:"center"}} > Button 1 </Text>
    </TouchableOpacity>
</View>

在此处尝试两种解决方案:https://snack.expo.io/wAENhUQrp

  • justifyContent: 'space-between' 不会为按钮使用所有可用空间
  • button {alignSelf: 'stretch'} 不适用于 Button 组件

答案 3 :(得分:0)

简单地使用这种样式!

<块引用>

style={{flexDirection: 'row',alignSelf: 'stretch',}}