Как показать React Native Modal в центре экрана в виде маленького окна - PullRequest
0 голосов
/ 05 марта 2020

Я хочу показать мой реагирующий родной модальный режим в середине экрана, даже если я выполнил стилизацию, но окно отображается в верхней части экрана, но не в центре экрана. Это то, что я пробовал до сих пор:

 <Modal animationType = {"slide"} transparent = {true}
        style={styles.modal}
               visible = {this.state.modalVisible}
               onRequestClose = {this.closeModal}>

               <View style={{justifyContent: 'center', backgroundColor: '#ffff', margin: 0, 
          alignItems: 'center'}}>
                  <Text >Enter Email</Text>
                  <TextInput
              underlineColorAndroid='transparent'
              onChangeText={(email) => this.setState({email})}/>
              <Text>Enter Password</Text>
              <TextInput 
              secureTextEntry={true}
              underlineColorAndroid='transparent'
              onChangeText={(password) => this.setState({password})}/>
                  <TouchableHighlight onPress = {() => {
                     this.toggleModal(!this.state.modalVisible)}}>
                     <Text >Close</Text>
                  </TouchableHighlight>
               </View>
            </Modal>

Это модальный стиль:

const styles = StyleSheet.create({
      modal:{
          position:"relative",
        width: 250, 
        height: 100,
        backgroundColor: '#FFF',
        justifyContent: 'center',
        alignSelf: 'center',
      }
});

1 Ответ

1 голос
/ 05 марта 2020

В нативном ReactNative Modal нет style реквизита (см. Документацию по этой ссылке , подробнее об этом позже в ответе).

Чтобы правильно оформить стиль ваш Modal, вам нужно будет создать View со стилем flex: 1 в качестве родителя для всех ваших дочерних элементов. Например, вы должны сделать что-то следующим образом:

<Modal
  animationType={"slide"}
  transparent={true}
  visible={this.state.modalVisible}
  onRequestClose={this.closeModal}
>
  <View style={{ flex: 1, justifyContent: "center", alignItems: "center" }}> // modalContainerStyle
    <View style={styles.childStyle}>
       {...}
    </View>
  </View>
</Modal>

, где childStyle будет стилем первого элемента в модале из вашего примера.

Вы также можете добавить backgroundColor от rgba(0,0,0,0.5) до modalContainerStyle в приведенном выше коде, чтобы придать ему надлежащий модальный вид.

Возвращаясь к опоре style, он предлагается только в управляемой сообществом оболочке RN Modal называется react-native-modal. Подробнее об этом можно прочитать здесь: https://github.com/react-native-community/react-native-modal

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...