flex: 1 не заполняет весь экран - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь изменить цвет фона моего приложения, но этот цвет не занимает весь экран. Когда я устанавливаю flex на 0, цвет фона охватывает только необходимое количество, но когда я устанавливаю его на 1, вместо того, чтобы расширять весь экран, он сжимается. Что я сделал не так?

with flex 0

with flex 1

Вот код, меняющий корневое представление flex: render () { вернуть (

    <Text>{welcome}</Text>

    <TextInput
      underlineColorAndroid="rgba(0,0,0,0)"
      placeholder={email}
      autoCapitalize="none"
      style={styles.textInput}
      onChangeText={email1 => this.setState({ email1 })}
    />
    <TextInput
      underlineColorAndroid="rgba(0,0,0,0)"
      secureTextEntry
      placeholder={password}
      autoCapitalize="none"
      style={styles.textInput}
      onChangeText={password1 => this.setState({ password1 })}
      value={this.state.password1}
    />
    {this.state.errorMessage && (
      <Text style={styles.error}>{this.state.errorMessage}</Text>
    )}
    <TouchableOpacity
      onPress={this.handleSignUp}
      style={styles.buttonContainer}
    >
      <Text style={styles.buttonText}>{signup}</Text>
    </TouchableOpacity>

    <Text
      style={styles.text}
      onPress={() => this.props.navigation.navigate("LoginScreen")}
    >
      {already_have_an_account}
    </Text>
  </KeyboardAvoidingView>
);

} }

    const styles = StyleSheet.create({
    container: {
      justifyContent: "center",
      padding: 20,
      backgroundColor: "red",
      flex: 0
    },
    textInput: {
      height: 40,
      marginTop: 8,
     paddingHorizontal: 8,
      backgroundColor: "#e2e2e2"
    },
    buttonContainer: {
      backgroundColor: "#3bd774",
      padding: 15,
      marginTop: 10
    },

  buttonText: {
    textAlign: "center",
    color: "white",
    fontWeight: "bold"
  },

  logo: {
    width: 200,
    height: 200
  },

  logoContainer: {
    alignItems: "center",
    justifyContent: "center"
  },

  text: {
    marginTop: 16,
    color: "#bcbcbc",
    textAlign: "center"
  },

  error: {
    marginTop: 8,
    color: "red"
  }
});

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Вы должны убедиться, что у вас есть flex: 1 по всей цепочке просмотров. Это потому, что flex: 1 заставит представление заполнить его родительский

Я вижу, что то, что вы скопировали / вставили, не весь код, так как есть </KeyboardAvoidingView>, но нет открывающего тега.

Итак, по крайней мере, вам нужен <KeyboardAvoidingView style={{flex: 1}}>, но если есть что-то, что обернуло это, вы должны добавить flex: 1 к этому элементу управления.

0 голосов
/ 26 июня 2018

Поместите весь макет в оболочку View и задайте этот стиль этому представлению

container: {
      justifyContent: "center",
      padding: 20,
      alignItems:'center',
      backgroundColor: "red",
      flex: 1
    }

Пример выполнения: https://snack.expo.io/Hy-Gv-lGm

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