В моем реактивном проекте внутри модального окна я использую две кнопки в представлении. Но проблема в том, что между ними не работает маржа.
Вот код
<View style = {styles.container}>
<Modal
animationType = {"slide"}
transparent = {false}
visible = {this.state.ModalVisibleStatus}
onRequestClose = {() => { console.info("Modal has been closed.") }}
>
{/*All views of Modal*/}
{/*Animation can be slide, slide, none*/}
<View style = {styles.modal}>
<Text style = {styles.text}>Modal is open!</Text>
<View style = {styles.inputContainerEmail}>
<Image style = {styles.inputIcon} source = {{ uri: this.state.catImage }} />
<TextInput style = {styles.inputs}
placeholder = "Email Address"
keyboardType = "email-address"
underlineColorAndroid='transparent'
onChangeText = {(text) => this.updateValue(text, 'email')} />
</View>
<View style = {{ flexDirection: 'row' }}>
<Button style = {{ marginRight: 10 }} title = "Save" onPress = {() => {
this.setState({ ModalVisibleStatus: !this.state.ModalVisibleStatus })
}} />
<Button style = {{ marginLeft: 10 }} title = "Close" onPress = {() => {
this.setState({ ModalVisibleStatus: !this.state.ModalVisibleStatus })
}} />
</View>
</View>
</Modal>
</View>
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#DCDCDC',
},
modal: {
flex: 1,
alignItems: 'center',
backgroundColor: '#aaaa',
padding: 100
},
text: {
color: '#3f2949',
marginTop: 10
}
)}
После запуска этого кода он получает следующий вывод:
Итак, как я могу добавить отступ между этими двумя кнопками?
React-Native Button
очень ограничен в том, что вы можете сделать, и, насколько я знаю, пока не поддерживает свойство стиля. Я бы посоветовал изучить использование TouchableOpacity или TouchableNativeОтзывы для настройки ваших потребностей.
Потенциально более грязным решением было бы обернуть оба Buttons
внутри отдельного отдельного родительского View
компонента и вместо этого применить ваше свойство margin
к этим родительским View
компонентам. В качестве альтернативы вы могли бы указать justifyContent:'space-between'
в своем родительском компоненте View
как есть и посмотреть, даст ли это желаемый результат. Например, подход с несколькими представлениями может выглядеть примерно так:
<View style = {{flexDirection: 'row'}}>
<View style = {{flex:1 , marginRight:10}} >
<Button title = "Save" onPress = {() => {
this.setState({ ModalVisibleStatus: !this.state.ModalVisibleStatus })
}} />
</View>
<View style = {{flex:1}} >
<Button title = "Close" onPress = {() => {
this.setState({ ModalVisibleStatus: !this.state.ModalVisibleStatus })
}} />
</View>
</View>
Надеюсь, это поможет!
И я попробовал код, который вы предоставили, он также работает :)
Добавьте justifyContent:"space-between"
в код представления кнопки как
<View style = {{ flex:1, flexDirection: 'row' , justifyContent:"space-between"}}>
<Button style = {{ flex:1}} title = "Save" onPress = {() => {
this.setState({ ModalVisibleStatus: !this.state.ModalVisibleStatus })
}} />
<Button style = {{ flex:2 }} title = "Close" onPress = {() => {
this.setState({ ModalVisibleStatus: !this.state.ModalVisibleStatus })
}} />
</View>
Ссылка для ознакомления https://css-tricks.com/almanac/properties/j/justify-content/
Большое спасибо за сообщение об ограничении Button. Я легко решил это, используя TouchableOpacity.