如何让TextInput显示输入文本的开头而不是Android中的结尾?

时间:2018-02-15 09:13:22

标签: android react-native textinput

我的react-native应用程序中有一个TextInput。当我设置值prop并且值大于TextInput的长度时,它显示从结尾而不是开头开始的文本。在iOS中它可以正常工作,它似乎是一个Android问题。有没有办法将文本与TextInput的开头或首选的文本对齐?

这就是我所看到的:

enter image description here

这就是我想要的:

enter image description here

这是我的代码

<TextInput
defaultValue={address}
ref="searchInput"
autoCorrect={false}
style={searchStyles.searchInputField}
placeholderTextColor={'#ddd'}
placeholder="Location"
onChangeText={query => this.search(query)}
/>

5 个答案:

答案 0 :(得分:3)

添加没有selection={{start:0}}属性的end

答案 1 :(得分:3)

尝试一下对我有用

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}
/>

答案 2 :(得分:1)

$vid = array('7'); $vidDB = array('5','4','6,7'); $vidDB2 = explode(',',implode(',',$vidDB)); //Flatten the array using implode and explode $common = array_intersect($vid, $vidDB2); //Check the common array $count = count($common); //To return the number echo "<pre>";; print_r( $common ); echo "</pre>"; 或您可以尝试ellipsizeMode="head"

答案 3 :(得分:0)

我遇到了同样的问题,为此,我的解决方案是默认情况下将selection道具添加到开头。这样可以有效地使输入成为焦点。然后,我添加了autoFocus道具并将其设置为true,以使其在加载组件时开始。

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

也许有更好的方法可以做到这一点,但这就是我想出的希望能对其他人有所帮助的地方。

答案 4 :(得分:0)

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

将代码放在onEndEditing中以及您想更新文本的任何地方。

或同时更新文本和选择内容:

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