Как правильно выровнять ввод текста в 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, чтобы текст начинался с верхнего левого угла?
Викрамадитья

Ответы:

202

У меня была такая же проблема, но приведенные выше примечания не помогли ее решить. Существует свойство стиля только для Android,textAlignVertical которое устраняет эту проблему для многострочных входов.

т.е. textAlignVertical: 'top'

Джанфранко П.
источник
1
ios решается по умолчанию или это исправление работает только для android?
dev_ter
2
@dev_ter только для Android. Я думаю, что iOS по умолчанию выровнена по верхнему краю, хотя я давно не использовал RN, поэтому на самом деле не подтвердил. Не уверен, что и как вы будете выравнивать по центру, но не стесняйтесь делать заметки или редактировать, если узнаете, как!
5
Замечательно, решена проблема выравнивания TextInput multiline={true}в android.
C.Lee
8
Как можно принять ответ, если textAlignVertical только для Android?
Макс
1
Работаем и
21

TextInput имеет отступ по умолчанию, переопределите его, установив:

paddingTop: 0,
paddingBottom: 0

Проблема с Github

Тарик Чакур
источник
Это была моя проблема. Кроме того, textAlignVertical не является опорой согласно документации
shoopi
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

В примерах многострочный , что корабль с React Native в проводнике UI должен работать как описано.

Проблема, с которой вы столкнетесь, заключается в том, что многострочный TextInput еще не работает правильно, а документы вводят в заблуждение. См. Эту проблему Github:

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

«Мы еще не перенесли эту функциональность на открытый исходный код».

В этой проблеме есть код, который дает минимальную многострочную функциональность, поэтому вы можете заставить его работать с этим.

Колин Рамзи
источник
1

У меня сработало (RN 0.61.5):

<TextInput style={{textAlignVertical:'top', paddingTop: 0, paddingBottom:0 }} />
Андрей Пацейко
источник
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,     
},
user9806259
источник
0

Я узнал, что для каждого инспектора элементов для iOS есть paddingTop: 5for multiline TextInputs. Это все еще применялось, хотя я установил paddingVertical: 15для всех своих входов. В результате в многострочном вводе на iOS получился нецентрированный текст. Решение заключалось в том, чтобы дополнительно добавить paddingTop: 15if TextInputis multilineи платформу iOS. Теперь визуально нет разницы между однострочным и многострочным вводом на обеих платформах, Android и iOS.

Даниэль
источник
-1

Чтобы выровнять текст по вертикали по центру на обеих платформах, используйте:

Для использования Android textAlignVertical: "center"

Для использования на iOS justifyContent: "center"

Артур Эшенбренер
источник
Не работает на iOS.
Абдул Матин