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.


15
cobalah untuk menghilangkan "pusat" gravitasi Anda, mungkin masalahnya
Sephy

Jawaban:



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

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


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


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

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 ..

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.