A entrada de texto é alinhada ao centro, como corrigir esta entrada de texto para que receba a entrada do canto superior esquerdo
Aqui está meu css para 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
}
javascript
ios
reactjs
react-native
Vikramaditya
fonte
fonte
Respostas:
Eu tive o mesmo problema, mas as notas acima não resolveram. Há uma propriedade de estilo somente Android
textAlignVertical
que corrige esse problema em entradas de várias linhas.ie
textAlignVertical: 'top'
fonte
multiline={true}
no android.textAlignVertical
for apenas para Android?TextInput tem preenchimento padrão, substitua-o definindo:
paddingTop: 0, paddingBottom: 0
Github Issue
fonte
Eu encontrei a solução que no Android, o estilo TextInput
textAlignVertical: 'top'
funciona. mas no iOS, a propriedade TextInputmultiline={true}
funciona.fonte
Tive um caso de uso semelhante em meu aplicativo iOS, em que a
TextInput
altura do 'era 100 e o marcador aparecia no meio. Useimultiline={true}
e fez o texto aparecer de cima. Espero que ajude.fonte
Dê
textAlignVertical : "top"
isso resolverá seu problema.<TextInput placeholder="Your text post" multiline={true} numberOfLines={10}, maxLength={1000} style={{ borderWidth: 1, backgroundColor: "#e3e3e3", textAlignVertical : "top" }} />
fonte
Atualização 03/07/2015: as entradas de texto de várias linhas foram mescladas:
https://github.com/facebook/react-native/pull/991
Os exemplos de várias linhas que acompanham o React Native no UI Explorer devem funcionar conforme documentado.
O problema que você terá é que TextInput multilinha ainda não está funcionando corretamente e os documentos são enganosos. Por favor, veja este problema no Github:
https://github.com/facebook/react-native/issues/279
Há algum código nesse problema que oferece funcionalidade mínima de várias linhas, então você pode conseguir fazê-lo funcionar com isso.
fonte
Funcionou para mim (RN 0.61.5):
<TextInput style={{textAlignVertical:'top', paddingTop: 0, paddingBottom:0 }} />
fonte
Apenas caso você esteja procurando o código:
<TextInput placeholder={'comment goes here!'} multiline style={{textAlignVertical:'top', ...otherStyle}} />
fonte
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, },
fonte
Descobri por inspetor de elemento, que para iOS existe um
paddingTop: 5
formultiline
TextInput
s. Isso ainda foi aplicado, embora eu tenha definidopaddingVertical: 15
para todas as minhas entradas. O resultado foi um texto não centralizado em entradas de várias linhas no iOS. A solução foi adicionar adicionalmente umpaddingTop: 15
if theTextInput
ismultiline
e a plataforma for iOS. Agora não há diferença visual entre entradas de linha única e multilinha em ambas as plataformas, Android e iOS.fonte
Acho que é o padrão para iOS, para android no meu caso, adicionar
paddingVertical: 0,
estilo de texto funcionou.fonte
As respostas acima fornecem o para iOS ou Android, o que pode ser bastante enganoso, então isso corrige para ambas as plataformas.
<TextInput style={{ flex: 1, width: "100%", height: 150, color: "#FFF", textAlignVertical: "top", // android fix for centering it at the top-left corner }} multiline={true} // ios fix for centering it at the top-left corner numberOfLines={10} />
Para Android -
style={{ //... flex:1, textAlignVertical: "top", // android fix for centering it at the top-left corner //... }}
Para iOS, adicione
multiline={true}
ao<TextInput/>
componentefonte
Para obter o texto alinhado verticalmente no centro em ambas as plataformas, use:
Para uso Android
textAlignVertical: "center"
Para uso ios
justifyContent: "center"
fonte