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

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

Вот мой код
<TextInput
defaultValue={address}
ref="searchInput"
autoCorrect={false}
style={searchStyles.searchInputField}
placeholderTextColor={'#ddd'}
placeholder="Location"
onChangeText={query => this.search(query)}
/>
Ответ 1 · рейтинг 7 · Aidan Doherty
Я столкнулся с той же проблемой. Мое решение для этого заключалось в добавлении реквизита selection. к началу по умолчанию. Это работает, поэтому, когда ввод сфокусирован, он переходит в начало. Затем я добавил свойство autoFocus и установил для него значение true, чтобы оно работало. к началу при загрузке компонента.
<TextInput value={address} autoFocus={true} selection={{start:0, end:0}} />
Может быть лучший способ сделать это, но это то, что я придумал, надеюсь, это поможет другим.
Ответ 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 } })