<EditText
android:id="@+id/editText2"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:maxLines="5"
android:lines="5">
</EditText>
Pengguna dapat memasukkan lebih dari 5 baris, dengan menekan tombol enter / baris berikutnya. Bagaimana saya bisa membatasi input pengguna ke jumlah baris tetap dengan EditText?
android
android-layout
android-edittext
Indrek Kõue
sumber
sumber
Jawaban:
Atribut
maxLines
sesuai dengan ketinggian maksimumEditText
, itu mengontrol batas luar dan bukan garis teks dalam.sumber
Anda hanya perlu memastikan bahwa Anda memiliki set atribut "inputType". Itu tidak bekerja tanpa garis ini.
sumber
inputType
ketext
. Terima kasih telah menghemat waktu saya :-)Ini tidak memecahkan masalah umum membatasi n baris. Jika Anda ingin membatasi EditText Anda hanya dengan 1 baris teks, ini bisa sangat mudah.
Anda dapat mengatur ini di file xml.
atau secara terprogram
sumber
@Cedekasem Anda benar, tidak ada "pembatas baris" bawaan. Tapi saya membangun satu diri saya, jadi jika ada yang tertarik kode di bawah ini. Bersulang.
sumber
Saya melakukan sesuatu seperti yang kalian cari. Ini
LimitedEditText
kelas saya .Fitur:
tidak akan membawa Anda sampai akhir - itu akan tetap berada di tempat Anda berada.
Saya mematikan pendengar, karena setiap panggilan
setText()
metode akan memanggil 3 metode panggilan balik ini secara berjaga-jaga jika pengguna melebihi karakter atau batas baris.Kode:
sumber
beforeCursorPosition = getSelectionStart();
diafterTextChanged
callback. Ini berfungsi lebih baik karena ketika mengetike
setelah mengetikabcd
, EditText mungkin 'berpikir' Anda gantiabcd
denganabcde
, karena alasan metode input.Saya telah membuat solusi yang lebih sederhana untuk ini: D
Anda dapat mengubah nilai 3 in
txtSpecialRequests.getLineCount() > 3
ke kebutuhan Anda.sumber
Berikut ini adalah InputFilter yang membatasi garis yang diizinkan dalam EditText:
Untuk menambahkannya ke EditText:
sumber
Inilah yang saya gunakan dalam proyek saya:
Dan itu berhasil di semua skenario
sumber
atur editText
android:inputType="text"
sumber
Solusi paling sederhana:
...
sumber
sumber
ini adalah satu pendekatan. Bisa membantu seseorang.
sumber
Cara lain untuk membatasi Anda
EditText
ke satu baris adalah sebagai berikut:Perhatikan bahwa setelah menerapkan metode transformasi ini, tombol enter menciptakan spasi ketika ditekan. Itu masih memenuhi pertanyaan TS.
sumber
Anda dapat membatasi teks Anda sesuai dengan jumlah baris Anda, saya katakan sekitar 37 huruf dalam satu baris
sumber
getLineCount () adalah salah satu opsi; jika Anda menginginkan nilai bukan nol, pastikan tampilan Anda diukur. Untuk keyboard lunak onKeyListener tidak akan berfungsi sehingga Anda harus menambahkan addTextChangedListener () yang akan melacak perubahan teks saat Anda mengetik. Segera setelah Anda mendapatkan cukup banyak baris di dalam punggung panggilannya, lakukan apa pun yang ingin Anda batasi: hapus karakter dengan getText (), setText () atau sesuatu yang lebih mewah. Anda bahkan dapat membatasi jumlah karakter menggunakan filter.
Pilihan lain adalah memantau ukuran teks dengan getLineBounds (). Ini akan berinteraksi dengan gravitasi teks / paddign jadi hati-hati.
sumber
Untuk membatasi jumlah karakter, kita cukup menggunakan properti maxLength dari EditText karena tidak akan mengizinkan pengguna untuk memasukkan lebih banyak karakter.
sumber
sumber
Gagasan lain: setiap kali setelah mengetik, teks baru akan disimpan ke String lastText, hanya jika jumlah baris tidak melebihi MAX_LINES. Jika ya, kami akan mengatur teks EditText ke teks yang terakhir ditambahkan (sehingga perubahan akan dihapus) dan memberi tahu pengguna untuk membuatnya singkat.
sumber
Ini adalah perpanjangan dari jawaban Indrek Kõue untuk Kotlin
sumber
Coba gunakan kombinasi atribut EditText berikut di dalam file xml:
android:singleLine="true"
android:maxLength="22"
sumber
android:inputType
mengganti penggunaanandroid:singleLine