Tepki yerelde metin girişi doğru şekilde nasıl hizalanır?


91

Metin girişi ortaya hizalanır, bu metin girişi sol üst köşeden giriş alacak şekilde nasıl düzeltilir

Metin girişi ortaya hizalanır, bu metin girişi sol üst köşeden giriş alacak şekilde nasıl düzeltilir

İşte metin girişi için css'im

/* 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
umm ... neyle hizalayalım? Sorunuz ne yapmaya çalıştığınızı belirtmiyor.
Colin Ramsay

1
Metnimin sol üst köşeden başlaması için css'me ne eklemeliyim?
Vikramaditya

Yanıtlar:


210

Ben de aynı sorunu yaşadım, ancak yukarıdaki notlar sorunu çözmedi. Bir var android okunur tarzı bir tesistir textAlignVerticalsatırlı girdileri bu sorunu giderir söyledi.

yani textAlignVertical: 'top'


1
ios varsayılan olarak çözülüyor mu yoksa bu düzeltme yalnızca android için mi çalışıyor?
dev_ter

2
@dev_ter yalnızca android içindir. Ben düşünüyorum ben kullanılan RN ettik beri çok aslında teyit edilmemiş varken bir oldu gerçi iOS üste hizalanmış varsayılan gereğidir. Ortaya hizalayıp hizalayacağınızdan / nasıl hizalayacağınızdan emin değilsiniz, ancak nasıl olduğunu öğrenirseniz not almaktan veya düzenlemekten çekinmeyin!

5
Harika, multiline={true}Android'de TextInput hizalama sorununu çözdü .
C.

8
textAlignVertical Yalnızca Android içinse, nasıl cevap kabul edilebilir ?
Maksimum

1


20

Android'de TextInput stilinin textAlignVertical: 'top'işe yaradığı çözümü buldum . ancak ios'ta TextInput özelliği multiline={true}çalışır.


5

İOS uygulamamda benzer bir kullanım durumum vardı, burada TextInputyüksekliği 100'dü ve yer tutucunun ortada gösteriliyordu. Ben kullandım multiline={true}ve metnin yukarıdan görünmesini sağladı. Umarım yardımcı olur.


en altta görünmesini sağlamanın bir yolu var mı?
Johhan Santana

5

textAlignVertical : "top"Sorununuzu çözecek olanı verin .

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

3

Güncelleme 2015-07-03: çok satırlı metin girişleri artık birleştirildi:

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

UI Explorer'da React Native ile birlikte gelen çok satırlı örnekler belgelendiği gibi çalışmalıdır.

Karşılaşacağınız sorun, çok satırlı TextInput'un henüz düzgün çalışmaması ve belgelerin yanıltıcı olmasıdır. Lütfen bu Github sorununa bakın:

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

"Bu işlevselliği henüz açık kaynağa taşımadık."

Bu sayıda minimum çok satırlı işlevsellik sağlayan bazı kodlar vardır, bu nedenle bununla çalışmasını sağlayabilirsiniz.


1

Benim için çalıştı (RN 0.61.5):

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

0

Sadece kodu arıyorsun Incase:

<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

Öğe denetçisi başına, iOS için bir paddingTop: 5for multiline TextInputs olduğunu öğrendim . Bu, paddingVertical: 15tüm girdilerim için ayarlamama rağmen yine de uygulandı . Sonuç, iOS'ta çok satırlı girişlerde ortalanmamış bir metin oldu. Çözelti, ilave bir ekleme olarak paddingTop: 15ise TextInputolan multilineve platform IOS olup. Artık hem Android hem de iOS platformlarında tek satırlı ve çok satırlı girdiler arasında görsel olarak hiçbir fark yok.


0

Sanırım iOS için varsayılan, benim durumumda android paddingVertical: 0,için metin stiline ekleme çalıştı.


0

Yukarıdaki Cevaplar, iOS veya android için verir, bu oldukça yanıltıcı olabilir, bu nedenle bu, her iki platform için de düzeltir.

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

Android için -

style={{
//...
flex:1,
textAlignVertical: "top", // android fix for centering it at the top-left corner 
//...
}}

İOS multiline={true} için <TextInput/>bileşene ekleyin


-1

Metni her iki platformda dikey olarak ortalamak için şunu kullanın:

Android kullanımı için textAlignVertical: "center"

İOS kullanımı için justifyContent: "center"

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.