2016-02-23 18 views
16

設定方法はありますか?React NativeのTextInputのplaceholderにはのみしかありませんか?React NativeでTextInputプレースホルダのスタイリングを変更するにはどうすればよいですか?

お待ちくださいhere at the documentationプレースホルダとプレースホルダーのテキストのみを設定できるようです。

+0

に設定できますか? –

+0

nope。 –

+0

の解決策を見つけてうれしいです。同じ問題が残っています。 –

答えて

10

class TextInput2 extends Component { 
    constructor(props) { 
    super(props); 
    this.state = { placeholder: props.text.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} 
     /> 
    } 
} 

使用法:

<TextInput2 
    text={this.state.myText} 
    style={{ fontFamily: "MyFont" }} 
    placeholderStyle={{ fontFamily: "AnotherFont", borderColor: 'red' }} 
/> 
5

この機能を自分で構築することができます。プレースホルダは、入力が空のときに表示されるので、あなたの状態を確認し、それに応じてのfontStyleを変更することができます。これはいるfontFamily =システムで動作するようには思えないいくつかの理由について

<TextInput onChange={txt => this.setState({enteredText: txt})} 
    fontStyle={this.state.enteredText.length == 0 ? 'italic' : 'normal'} 
    style={style.input} /> 

を。したがって、明示的にfontFamilyを指定する必要があります。より一般的な解決のためにダニエルの答えに改善

+0

onChangeは、イベントオブジェクトを渡し、 'event.nativeEvent.text'を使用するテキストを取得します。 –

+0

または、テキストを渡すだけでonChangeTextを使用します – rdixonbhw

4

コンテンツとのTextInputのプレースホルダプレースホルダのためたfontWeightとのfontSizeを設定することができますので、一般的なスタイルを使用します。別の場合は、プロパティplaceholderTextColorTextInput

関連する問題