Bagaimana cara menyelaraskan input teks dengan benar di react native?

91

Input teks rata tengah, cara memperbaiki input teks ini sehingga mengambil input dari pojok kiri atas

Input teks rata tengah, cara memperbaiki input teks ini sehingga mengambil input dari pojok kiri atas

Ini css saya untuk input teks

/* 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
sumber
2
umm ... sejajarkan dengan apa? Pertanyaan Anda tidak menentukan apa yang Anda coba lakukan.
Colin Ramsay
1
apa yang harus saya tambahkan di css saya sehingga teks saya dimulai dari pojok kiri atas?
Vikramaditya

Jawaban:

210

Saya memiliki masalah yang sama, tetapi catatan di atas tidak menyelesaikannya. Ada properti gaya khusus androidtextAlignVertical yang memperbaiki masalah ini pada input multiline.

yaitu textAlignVertical: 'top'

Gianfranco P.
sumber
1
apakah ios diselesaikan secara default atau apakah perbaikan ini hanya berfungsi untuk android?
dev_ter
2
@devter itu hanya untuk android. Saya pikir iOS diratakan atas secara default, meskipun sudah lama sejak saya menggunakan RN jadi belum benar-benar mengonfirmasi. Tidak yakin apakah / bagaimana Anda akan menyelaraskan tengah tetapi jangan ragu untuk membuat catatan atau mengedit jika Anda tahu caranya!
5
Luar biasa, memecahkan masalah penyelarasan TextInput dengan multiline={true}di android.
C. Lee
8
Bagaimana bisa diterima jawaban jika textAlignVertical hanya untuk Android?
Maksimal
1
Bekerja di iOS juga
deepelement
22

TextInput memiliki padding default, ganti dengan menyetel:

paddingTop: 0,
paddingBottom: 0

Masalah Github

Tarik Chakur
sumber
Itu masalah saya. Selain itu, textAlignVertical bukan properti menurut dokumentasi
shoopi
20

Saya telah menemukan solusi bahwa di Android, gaya TextInput textAlignVertical: 'top'berfungsi. tetapi di ios, prop TextInput multiline={true}berfungsi.

aseel
sumber
5

Saya memiliki kasus penggunaan serupa di aplikasi iOS saya, di mana TextInputtingginya 100 dan placeholder ditampilkan di tengah. Saya menggunakan multiline={true}dan itu membuat teks muncul dari atas. Semoga membantu.

Mahendra Liya
sumber
apakah ada cara untuk membuatnya muncul di bagian bawah?
Johhan Santana
5

Berikan textAlignVertical : "top"itu akan menyelesaikan masalah Anda.

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

Pembaruan 2015-07-03: input teks multiline sekarang telah digabungkan:

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

The contoh multiline bahwa kapal dengan Bereaksi asli di UI Explorer harus bekerja seperti yang didokumentasikan.

Masalah yang akan Anda hadapi adalah bahwa TextInput multiline belum berfungsi dengan benar, dan dokumennya menyesatkan. Silakan lihat masalah Github ini:

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

"Kami belum memindahkan fungsionalitas itu ke open source."

Ada beberapa kode dalam masalah itu yang memberikan fungsionalitas multiline minimal, jadi Anda mungkin bisa membuatnya bekerja dengannya.

Colin Ramsay
sumber
1

Ini berhasil untuk saya (RN 0.61.5):

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

Hanya Memetikan Anda mencari kode:

<TextInput
placeholder={'comment goes here!'}
multiline
style={{textAlignVertical:'top', ...otherStyle}}
/>
ishab acharya
sumber
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,     
},
pengguna9806259
sumber
0

Saya menemukan per inspektur elemen, bahwa untuk iOS ada paddingTop: 5untuk multiline TextInputs. Ini tetap diterapkan meskipun saya mengatur paddingVertical: 15semua masukan saya. Hasilnya adalah teks yang tidak terpusat pada input multiline di iOS. Solusinya adalah untuk tambahan menambahkan paddingTop: 15jika TextInputini multilinedan platform adalah iOS. Sekarang secara visual tidak ada perbedaan antara input single line dan multiline di kedua platform, Android dan iOS.

Daniel
sumber
0

Saya pikir ini default untuk iOS, untuk android dalam kasus saya menambahkan paddingVertical: 0,gaya teks berfungsi.

m1kelle
sumber
0

Jawaban Di Atas baik memberikan untuk iOS atau android, yang bisa sangat menyesatkan sehingga ini memperbaikinya untuk kedua platfom.

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

Untuk Android -

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

Untuk iOS, tambahkan multiline={true} ke <TextInput/>komponen

Abhishek
sumber
-1

Untuk membuat teks rata di tengah kedua platform, gunakan:

Untuk penggunaan android textAlignVertical: "center"

Untuk penggunaan ios justifyContent: "center"

Artur Eshenbrener
sumber