Android: Penjajaran vertikal untuk EditText multi-baris (area teks)

232

Saya ingin memiliki 5 baris untuk ketinggian area teks. Saya menggunakan kode berikut.

<EditText
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:singleLine="false"
    android:lines="5"
    android:layout_marginLeft="10dip"
    android:layout_marginRight="10dip" />

Area teks terlihat baik-baik saja, tetapi masalahnya adalah kursor berkedip di tengah kolom teks. Saya ingin berkedip di baris pertama, di karakter pertama dari bidang teks.

b-man
sumber
15
cobalah untuk menghilangkan "pusat" gravitasi Anda, mungkin masalahnya
Sephy

Jawaban:

370

Menggunakan android:gravity="top"

CommonsWare
sumber
99

Hal ini mirip dengan CommonsWare jawaban tetapi dengan tweak kecil: android:gravity="top|start". Contoh kode lengkap:

<EditText
    android:id="@+id/EditText02"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:lines="5"
    android:gravity="top|start"
    android:inputType="textMultiLine"
    android:scrollHorizontally="false" 
/>
Nandagopal T
sumber
8
Jangan gunakan top|leftkecuali Anda tahu Anda dapat mengontrol semua bahasa di aplikasi Anda, ada banyak bahasa dari kanan ke kiri di luar sana ( en.wikipedia.org/wiki/Right-to-left ) Tetap ramah terhadap lokalisasi
MariusBudin
1
@MariusBudin Agaknya, top|startakankah alternatif yang tepat?
larangan geoengineering
19

Anda dapat menggunakan Edittext ini .... Ini akan membantu Anda.

<EditText
android:id="@+id/EditText02"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:lines="5"
android:gravity="top|left"
android:inputType="textMultiLine" />
Denny Sharma
sumber
9

Gunakan ini:

android:gravity="top"

atau

android:gravity="top|left"
Samir Mangroliya
sumber
6
<EditText android:id="@+id/EditText02" android:layout_width="120dp"
    android:layout_height="wrap_content" android:lines="5" android:layout_centerInParent="true"
    android:gravity="top|left" android:inputType="textMultiLine"
    android:scrollHorizontally="false" android:minWidth="10.0dip"
    android:maxWidth="180dip" />

ini akan bekerja

Asad Rao
sumber
3

Sekarang penggunaan gravitasi sehari startadalah pilihan terbaik:

android:gravity="start"

Untuk EditText (textarea):

<EditText
    android:id="@+id/EditText02"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:lines="5"
    android:gravity="start"
    android:inputType="textMultiLine"
/>
Hasib Akter
sumber
Bisakah Anda menjelaskan mengapa ini berhasil? Saya akan berharap startuntuk bekerja seperti left(untuk bahasa Barat) - yaitu, hanya mempengaruhi gravitasi horisontal, tetapi juga tampaknya melakukan pekerjaan topjuga.
larangan geoengineering
Ya kamu benar. Kami terutama menggunakan ini untuk mendukung RTL. Seperti dalam bahasa Arab, ia pergi ke Kanan, bukan Kiri. Dan itu juga berlaku untuk topyang sudah Anda tanyakan. Secara umum kita mulai menulis dari sisi Kiri Atas, itu sebabnya ini STARTjuga menunjukkan karakteristik yang sama. @ ban-geoengineering
Hasib Akter
2

Saya pikir Anda dapat menggunakan layout:weight = 5sebagai gantinya android:lines = 5karena ketika Anda port aplikasi Anda ke perangkat yang lebih kecil - itu melakukannya dengan baik .. well, kedua atribut akan menyelesaikan pekerjaan Anda ..

Sanjay Herle
sumber