如何在React Native中正确对齐文本输入?


89

文本输入居中对齐,如何解决此文本输入问题,使其从左上角获取输入

文本输入居中对齐,如何解决此文本输入问题,使其从左上角获取输入

这是我的CSS输入文字

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

2
嗯...与什么对齐?您的问题未指定您要执行的操作。
科林·拉姆齐

1
我应该在CSS中添加些什么,以便我的文本从左上角开始?
Vikramaditya 2015年

Answers:


202

我遇到了同样的问题,但是以上说明并没有解决它。有一个仅适用Android的样式属性textAlignVertical,可解决多行输入中的此问题。

textAlignVertical: 'top'


1
ios是默认解决的还是此修复程序仅适用于android?
dev_ter

2
@dev_ter,仅适用于Android。我认为iOS默认是顶部对齐的,尽管自从我使用RN已经有一段时间了,所以实际上还没有确认。不知道您是否/如何对齐,但是如果发现如何,可以随时做笔记或编辑!

5
太棒了,multiline={true}在Android中解决了TextInput对齐问题。
C.Lee

8
如果textAlignVertical 仅适用于Android,如何接受答案?
最多

1
也在iOS中工作
深度元素


18

我找到了在Android中TextInput样式textAlignVertical: 'top'有效的解决方案。但在ios中,TextInput属性multiline={true}起作用。


5

我的iOS应用程序中有一个类似的用例,其中TextInput高度为100,占位符显示在中间。我使用过multiline={true},它使文本从顶部出现。希望能有所帮助。


有没有办法使它显示在底部?
约翰·桑塔纳

5

给予textAlignVertical : "top"解决您的问题。

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

3

2015-07-03更新:多行文本输入现已合并:

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

UI资源管理器中随React Native一起提供的多行示例应按记录工作。

您将遇到的问题是多行TextInput尚无法正常工作,并且文档具有误导性。请查看此Github问题:

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

“我们还没有将该功能移植到开源上。”

该问题中有一些代码只提供了最少的多行功能,因此您也许可以使用它。



0

以防万一您正在寻找代码:

<TextInput
placeholder={'comment goes here!'}
multiline
style={{textAlignVertical:'top', ...otherStyle}}
/>

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

0

我发现每个元素检查器对于iOS都有一个paddingTop: 5for multiline TextInput。即使我paddingVertical: 15为所有输入进行了设置,该方法仍然适用。结果是iOS上多行输入中的文本未居中。解决的办法是另外增加一个paddingTop: 15,如果TextInputmultiline和平台的iOS。现在,在两种平台(Android和iOS)上的单行输入和多行输入在视觉上都没有区别。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.