React Native: как установить <TextInput> и <Image> в центре вместе

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

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

constructor(props: any) {
  super(props);
  this.state = {
    onEdit: false,
  }
  this.onBlur = this.onBlur.bind(this);
  this.onEndEditing = this.onEndEditing.bind(this);
}

private onBlur() {
  this.setState({
    onEdit: true
  });
}
private onEndEditing() {
  this.setState({
    onEdit: !this.state.onEdit
  });
}    

private get searchView() {
  const { onEdit } = this.state;
  return (
    <View style = {styles.searchContainer}>
      <View style= {[styles.search, onEdit === true || this.props.keyword.length !== 0 ? undefined : { justifyContent: 'center' }]}>
        <Image source = {searchIcon} style = {[styles.image, { marginLeft: onEdit === true || this.props.keyword.length !== 0 ? 10 : 0 }]} />
        <TextInput
          style = {styles.searchInput}
          placeholder = {'search'}
          onEndEditing = {this.onEndEditing}
          onFocus = {this.onBlur}
          defaultValue = {this.props.keyword}
          clearButtonMode = "while-editing"
        />
      </View>
    </View>
  );
}

const styles = StyleSheet.create({
  searchContainer: {
    height: 72,
    padding: 16,
  },
  search: {
    flex: 1,
    flexDirection: 'row',
    alignItems: 'center',
    height: 40,
  },
  image: {
    marginRight: 10,
    alignSelf: 'center'
  },
  searchInput: {
    paddingRight: 10,
    fontSize: 14,
  },
})

Обновлять: При вводе текста в поле поиска появляется новая ошибка. Это было скрыто для первых нескольких персонажей.

React Native: как установить &lt;TextInput&gt; и &lt;Image&gt; в центре вместе

пожалуйста, прикрепите пример изображения того, как вы хотите, чтобы они были размещены

sanjaykmwt 27.12.2018 07:37

@sanjaykmwt Я приложил пример изображения.

ninh_nguyen 27.12.2018 07:45
Умерло ли Create-React-App?
Умерло ли Create-React-App?
В этом документальном фильме React.dev мы исследуем, мертв ли Create React App (CRA) и какое будущее ждет этот популярный фреймворк React.
Освоение React Native: Пошаговое руководство для начинающих
Освоение React Native: Пошаговое руководство для начинающих
React Native - это популярный фреймворк с открытым исходным кодом, используемый для разработки мобильных приложений. Он был разработан компанией...
В чем разница между react native и react ?
В чем разница между react native и react ?
React и React Native - два популярных фреймворка для создания пользовательских интерфейсов, но они предназначены для разных платформ. React - это...
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
Хуки React: что это такое и как их использовать
Хуки React: что это такое и как их использовать
Хуки React - это мощная функция библиотеки React, которая позволяет разработчикам использовать состояние и другие возможности React без написания...
1
2
290
1

Ответы 1

Вам нужно использовать сгибать вместо flexBox.

Ну вот:

render() {
    return (
      <View style = {styles.container}>
        <View style = {styles.searchContainer}>
          <Image source = {IC_PRIVATE_CLUB_NORMAL} style = {styles.image} />
          <TextInput
            style = {styles.searchInput}
            placeholder = {'search'}
          />
        </View>
      </View>

    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
  searchContainer: {
    height: 72,
    width: '90%',
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: 'pink',
    flexDirection: 'row'

    // padding: 16,
    // paddingLeft: 10,
    // paddingRight: 10,
    // flex: 1,
  },
  search: {
    // width: '80%',
    flexDirection: 'row',
    alignItems: 'center',
    height: 60,
    backgroundColor: 'gray'
  },
  image: {
    marginRight: 10,
    alignSelf: 'center'
  },
  searchInput: {
    height: 40,
    width: '80%',
    fontSize: 14,
    textAlign: 'center',
    backgroundColor: 'red'
  },
})

Хотите того же, что и в своем образе? Ширина исправлена?

Nirmalsinh 27.12.2018 07:48

да, я хочу то же самое, что и в моем изображении.

ninh_nguyen 27.12.2018 07:56

Обновленный ответ вам поможет.

Nirmalsinh 27.12.2018 07:56

Привет, братан, похоже, ты удалил <View style = {styles.search} />

ninh_nguyen 27.12.2018 08:09

Ага, хочешь?

Nirmalsinh 27.12.2018 08:09

Вам не потребуется отвечать на ваш вопрос.

Nirmalsinh 27.12.2018 08:10

вам не нужно менять высоту или ширину, потому что мне это подходит.

ninh_nguyen 27.12.2018 08:42

Все ок?

Nirmalsinh 27.12.2018 08:48

Другие вопросы по теме