Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как заставить TextInput показывать начало введенного текста вместо конца в Android?

Автор вопроса: WellingtonОтветов: 5

У меня есть TextInput в моем родном приложении. Когда я устанавливаю свойство значения, и значение больше, чем длина TextInput, оно показывает текст, начинающийся с конца, а не с начала. В iOS все работает нормально, проблема в Android. Есть ли способ выровнять текст для отображения с начала TextInput или в зависимости от того, что предпочтительнее?

Вот что я вижу:

введите описание изображения здесь

Вот что я хочу:

введите описание изображения здесь

Вот мой код

<TextInput
defaultValue={address}
ref="searchInput"
autoCorrect={false}
style={searchStyles.searchInputField}
placeholderTextColor={'#ddd'}
placeholder="Location"
onChangeText={query => this.search(query)}
/>
  • для андроида android:ellipsize="end" Abu Yousuf 15.02.2018

react-nativeandroidtextinput

Ответы

Ответ 1 · рейтинг 7 · Aidan Doherty

Я столкнулся с той же проблемой. Мое решение для этого заключалось в добавлении реквизита selection. к началу по умолчанию. Это работает, поэтому, когда ввод сфокусирован, он переходит в начало. Затем я добавил свойство autoFocus и установил для него значение true, чтобы оно работало. к началу при загрузке компонента.

<TextInput value={address} autoFocus={true} selection={{start:0, end:0}} />

Может быть лучший способ сделать это, но это то, что я придумал, надеюсь, это поможет другим.

Ответ 2 · рейтинг 4 · Yossi Saadi

Добавьте selection={{start:0}} без атрибута end

Ответ 3 · рейтинг 4 · Surender Kumar

попробуй это у меня работает

constructor(props) {
 super(props);

 this.state = {
   selection: Platform.OS === 'android' ? { start: 0 } : null
 }
}

onFocus =()=>{
  if(Platform.OS==='android'){
    this.setState({ selection:null });
  }
}

onBlur =()=>{
  if(Platform.OS==='android'){
    this.setState({ selection:{ start: 0, end: 0 } });
  }
}

<TextInput
  onFocus={()=>this.onFocus()}
  onBlur={()=>this.onBlur()}
  selection={this.state.selection}
/>

Ответ 4 · рейтинг 1 · Đạt Trần

this.inputRef &&
        this.inputRef.setNativeProps({ selection: { start: 0, end: 0 } })

Поместите код в onEndEditing и везде, где вы хотите обновить текст.

Или обновите текст и выделение одновременно:

this.inputRef &&
        this.inputRef.setNativeProps({ text: value, selection: { start: 0, end: 0 } })

Ответ 5 · рейтинг -2 · Pravin

ellipsizeMode="head" или Вы можете попробовать ellipsizeMode="tail"

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы