¿Cómo alinear la entrada de texto correctamente en react native?

89

La entrada de texto está alineada al centro, cómo arreglar esta entrada de texto para que tome la entrada desde la esquina superior izquierda

La entrada de texto está alineada al centro, cómo arreglar esta entrada de texto para que tome la entrada desde la esquina superior izquierda

Aquí está mi css para la entrada de texto

/* The Text input is center aligned, how to fix this text input so that it takes input from top left corner */

input: {
  flex: 1, padding: 4, marginRight: 1, marginTop: 5, fontSize: 18, borderWidth: 1, borderRadius: 4, borderColor: '#E6E5ED', backgroundColor: '#F8F8F9', justifyContent: 'flex-start', height: 150
}
Vikramaditya
fuente
2
umm ... alinearlo con qué? Tu pregunta no especifica lo que estás intentando hacer.
Colin Ramsay
1
¿Qué debo agregar en mi css para que mi texto comience desde la esquina superior izquierda?
Vikramaditya

Respuestas:

202

Tuve el mismo problema, pero las notas anteriores no lo resolvieron. Hay una propiedad de estilo solo para AndroidtextAlignVertical que soluciona este problema en entradas multilínea.

es decir textAlignVertical: 'top'

Gianfranco P.
fuente
1
¿iOS se resuelve de forma predeterminada o esta solución funciona solo para Android?
dev_ter
2
@dev_ter es solo para Android. Creo que iOS está alineado en la parte superior de forma predeterminada, aunque ha pasado un tiempo desde que usé RN, por lo que en realidad no lo he confirmado. No estoy seguro de si / cómo se alinearía en el medio, pero siéntase libre de hacer una nota o editar si descubre cómo.
5
Impresionante, resolvió el problema de alineación de TextInput con multiline={true}en Android.
C.Lee
8
¿Cómo se puede aceptar la respuesta si textAlignVertical es solo para Android?
Máximo
1
Trabajando en iOS también
deepelement
21

TextInput tiene relleno predeterminado, anótelo configurando:

paddingTop: 0,
paddingBottom: 0

Problema de Github

Tarik Chakur
fuente
Ese era mi problema. Además, textAlignVertical no es un accesorio según la documentación
shoopi
18

Encontré la solución que en Android, el estilo TextInput textAlignVertical: 'top'funciona. pero en ios, la función TextInput multiline={true}funciona.

aseel
fuente
5

Tuve un caso de uso similar en mi aplicación iOS, en el que la TextInputaltura de la 'era 100 y el marcador de posición se mostraba en el medio. Usé multiline={true}e hizo que el texto apareciera desde arriba. Espero que ayude.

Mahendra Liya
fuente
¿Hay alguna forma de hacer que aparezca en la parte inferior?
Johhan Santana
5

Dar textAlignVertical : "top"que resolverá tu problema.

<TextInput placeholder="Your text post" multiline={true} numberOfLines={10}, maxLength={1000} style={{ borderWidth: 1, backgroundColor: "#e3e3e3", textAlignVertical : "top" }} />
Sukshith S
fuente
3

Actualización 2015-07-03: ahora se han combinado las entradas de texto de varias líneas:

https://github.com/facebook/react-native/pull/991

Los ejemplos de varias líneas que se envían con React Native en el UI Explorer deberían funcionar como se documenta.

El problema que tendrá es que TextInput multilínea aún no funciona correctamente y los documentos son engañosos. Consulte este problema de Github:

https://github.com/facebook/react-native/issues/279

"Aún no hemos adaptado esa funcionalidad a código abierto".

Hay un código en ese número que brinda una funcionalidad mínima de varias líneas, por lo que es posible que pueda hacer que funcione con eso.

Colin Ramsay
fuente
1

Funcionó para mí (RN 0.61.5):

<TextInput style={{textAlignVertical:'top', paddingTop: 0, paddingBottom:0 }} />
Andrey Patseiko
fuente
0

En caso de que esté buscando un código:

<TextInput
placeholder={'comment goes here!'}
multiline
style={{textAlignVertical:'top', ...otherStyle}}
/>
ishab acharya
fuente
0
import { Dimensions} from 'react-native';
const screenWidth = Math.round(Dimensions.get('window').width);
const screenHeight = Math.round(Dimensions.get('window').height);

// ...
intext: {
    height:screenHeight - 10,
    textAlignVertical: 'top',
    fontSize:17,
    padding:12,
    fontFamily:'courier',
    margin:10,     
},
usuario9806259
fuente
0

Descubrí por inspector de elementos, que para iOS hay un paddingTop: 5for multiline TextInputs. Esto todavía se aplicó a pesar de que configuré paddingVertical: 15todas mis entradas. El resultado fue un texto no centrado en entradas de varias líneas en iOS. La solución fue agregar adicionalmente un paddingTop: 15if the TextInputis multiliney la plataforma es iOS. Ahora no hay diferencia visual entre las entradas de una sola línea y de varias líneas en ambas plataformas, Android e iOS.

Daniel
fuente
-1

Para alinear el texto verticalmente en el centro en ambas plataformas, use:

Para uso de Android textAlignVertical: "center"

Para uso de ios justifyContent: "center"

Artur Eshenbrener
fuente
No funciona en iOS.
Abdul Mateen