如何在React Native中更改TextInput占位符的样式?

Zoh*_*vin 32 android ios react-native

有没有办法fontStyle: 'italic' placeholderReact Native中的TextInput 设置?

这里的文档 似乎只能设置占位符和placeholderTextColor.

Jak*_*xon 21

改进Daniel对更通用解决方案的回答

class TextInput2 extends Component {
  constructor(props) {
    super(props);
    this.state = { placeholder: props.value.length == 0 }
    this.handleChange = this.handleChange.bind(this);
  }
  handleChange(ev) {
    this.setState({ placeholder: ev.nativeEvent.text.length == 0 }); 
    this.props.onChange && this.props.onChange(ev); 
  }
  render() {
    const { placeholderStyle, style, onChange, ...rest } = this.props;

    return <TextInput 
      {...rest} 
      onChange={this.handleChange}
      style={this.state.placeholder ? [style, placeholderStyle] : style}
      />
  }
}
Run Code Online (Sandbox Code Playgroud)

用法:

<TextInput2 
  text={this.state.myText}
  style={{ fontFamily: "MyFont" }}
  placeholderStyle={{ fontFamily: "AnotherFont", borderColor: 'red' }}
/>
Run Code Online (Sandbox Code Playgroud)

  • @cheesus 它实际上也正确回答了OP的问题。OP 承认 placeholderTextColor 的存在,并特别询问如何设置其他属性的样式。此外,这个答案是在钩子之前编写的,但用更少的代码行转换为基于钩子的替代方案应该是微不足道的 (3认同)

Seb*_*ara 19

您可以使用placeholderTextColorprop 设置占位符颜色.

<TextInput placeholderTextColor={'red'} />
Run Code Online (Sandbox Code Playgroud)

  • 不,这不应该是公认的答案。他们询问更改字体样式而不是颜色。 (5认同)
  • 这是我正在寻找的答案,而不是该线程中原始问题的答案,但仍然..帮助了我! (4认同)

Dan*_*dow 11

您可以自己构建此功能.输入为空时显示占位符,因此您可以检查状态并相应地更改fontStyle:

<TextInput
  onChangeText={txt => this.setState({enteredText: txt})}
  fontStyle={this.state.enteredText.length == 0 ? 'italic' : 'normal'}
  style={style.input} />
Run Code Online (Sandbox Code Playgroud)

出于某种原因,这似乎不适用于fontFamily = System.所以你必须明确指定fontFamily.

  • 输入第一个字符和样式更新之间存在滞后,导致样式出现明显跳跃 (2认同)

小智 5

TextInput 的 Content 和 placeHolder 使用通用样式,因此可以为 placeHolder 设置 fontWeight 和 fontSize。其次,你可以设置属性placeholderTextColorTextInput