type style react password number handling android ios react-native

android - style - text input email react native



¿Cómo cambiar el estilo del marcador de posición TextInput en React Native? (5)

El contenido y placeHolder de TextInput utilizan un estilo común, por lo que puede establecer fontWeight y fontSize para placeHolder. Por otro lado, puede establecer la propiedad placeholderTextColor para TextInput

¿Hay una manera de establecer fontStyle: ''italic'' solo para el placeholder de placeholder de TextInput en React Native?

Ver aquí la documentación parece que solo puede establecer un marcador de posición y un marcador de posición TextColor.


Mejorando la respuesta de Daniel para una solución más genérica.

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

Uso:

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


Puede configurar el color de su marcador de posición utilizando la propiedad placeholderTextColor .

<TextInput placeholderTextColor={''red''} />


Puedes construir esta funcionalidad tú mismo. El marcador de posición se muestra cuando la entrada está vacía, por lo que puede verificar su estado y cambiar el estilo de fuente en consecuencia:

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

Por alguna razón, esto no parece funcionar con fontFamily = System. Así que tienes que especificar explícitamente la familia de fuentes.


También puede utilizar un componente sin estado.

Aquí está mi solución:

Primero, en mi componente de pantalla ...

import React from ''react''; import { View } from ''react-native''; import MyWrappedComponent from ''../wherever/your/components/are/MyWrappedComponent''; class ScreenComponent extends React.Component { constructor(props) { super(props); this.state = { myText: null, }; this.handleTextOnChange = this.handleTextOnChange.bind(this); } handleTextOnChange(myText) { this.setState({ myText }); } render() { const { myText } = this.state return ( <View> <MyWrappedComponent value={myText} placeholder="My Placeholder Text" onChangeText={this.handleTextOnChange} style={styles.someStyle} placeholderStyle={style.somePlaceholderStyle} /> </View> ) }

Luego, en mi componente envuelto ...

import React from ''react''; import { TextInput } from ''react-native-gesture-handler''; const MyWrappedComponent = ({ style, placeholderStyle, value, ...rest }) => ( <TextInput {...rest} style={!value ? [style, placeholderStyle] : style} /> ); export default MyWrappedComponent;