如何使第二行在文本输入,而输入文本的React Native?

gstyhher  于 2023-01-05  发布在  React
关注(0)|答案(4)|浏览(129)

我想第二行,如果我输入了超过10个字符在textInput。我已经做了改变文本的字体大小,如果超过5个字符输入。这是工程罚款。
但是如果我输入超过11个字符,它应该会出现在第二行
请帮我清理一下
这是我的密码。

_onChangeText(text) {
     this.setState({ fontSize: (text.lenght > 6 ? 40 : 80) });
 }

 render() {
return (
  // Giving an array of objects to style property can help                                                    
 you to define a default value
      <TextInput 
          onChangeText={this._onChangeText.bind(this)}
          style={[ {fontSize: 80}, {fontSize: this.state.fontSize} ]}
     />
   )
}
sdnqo3pr

sdnqo3pr1#

multiline属性设置为true。不需要检查字符数。它会根据宽度自动处理它可以容纳的字符数。对我来说完全可以-〉x1c 0d1x
如果您有10个字符的特定要求,则在字符长度达到10时立即将multiline的值设置为true
此处提供的文档

sycxhyv7

sycxhyv72#

你可以做这样的事情

state = {
  fontSize: 80,
  inputValue: ''
}

onChangeText(event) {
  this.setState({
    fontSize: event.nativeEvent.text.length > 6 ? 40 : 80,
    inputValue: event.nativeEvent.text
  });
}

render() {
return (
  < TextInput
    multiline
    onChange={(event) =>
      this.onChangeText(event)
    }
    onContentSizeChange={(event) => {
      this.setState({ height: event.nativeEvent.contentSize.height })
    }}
    value={this.state.inputValue}
    style={{ fontSize: this.state.fontSize, height: Math.max(35, 
    this.state.height) }}
  />
    )
  }
}

设置多行并处理文本输入的高度

hi3rlvi2

hi3rlvi23#

使用multiline(boolean)属性检测何时需要显示多行。

_onChangeText(text) {
  const areCharsExceeded = text.length > 10;

  this.setState({ areCharsExceeded });
}

 <TextInput
  multiline={this.state.areCharsExceeded}
  onChangeText={this._onChangeText.bind(this)}
/>
6uxekuva

6uxekuva4#

<! -- use multiline to able the effect, multilive is a boolean and by default is false -->

<TextInput
    placeholder="broke line"
    multiline
/>

<! -- if you set a fixed height then multiline will not work, to fix this issue use min-height instead of height-->

相关问题