Saya bertanya-tanya apa cara terbaik untuk melakukan penghitungan karakter langsung dari kotak teks edit di Android. Saya melihat ini tetapi sepertinya saya tidak bisa memahaminya.
Untuk menjelaskan masalahnya, saya memiliki EditText dan saya mencoba membatasi karakter menjadi 150. Saya dapat melakukan ini dengan filter input, namun saya ingin menunjukkan tepat di bawah kotak teks jumlah karakter yang telah dimasukkan pengguna (Hampir seperti yang dilakukan stack overflow sekarang).
Jika seseorang dapat menulis potongan kecil kode contoh atau mengarahkan saya ke arah yang benar, saya akan sangat menghargainya.
Anda dapat melakukan penghitungan karakter dari xml itu sendiri menggunakan pembungkus TextInputLayout untuk EditText yang diperkenalkan di SupportLibrary v23.1
Cukup bungkus EditText Anda dengan TextInputLayout dan setel CounterEnabled menjadi true dan Setel counterMaxLength.
Anda akan mendapatkan efek material seperti ini
Anda dapat menggunakan counterOverflowTextAppearance , counterTextAppearance untuk mengatur gaya penghitung.
EDIT
Dari dokumentasi Android.
Kelas TextInputEditText disediakan untuk digunakan sebagai turunan dari tata letak ini. Menggunakan TextInputEditText memungkinkan TextInputLayout memiliki kontrol yang lebih besar atas aspek visual dari input teks apa pun. Contoh penggunaannya adalah sebagai berikut:
TextInputLayout TextInputEditText
sumber
Anda dapat melakukannya dengan
TextInputLayout
dan perpustakaan compat dengan:dan selesai:
sumber
di xml tambahkan atribut ini untuk editText
di java tambahkan pendengar ini
sumber
Sangat Sederhana Ikuti petunjuk di bawah ini:
==== Tambahkan ke Impor Anda ===
===== Tentukan ini =====
========== Inside On Create =====
sumber
sumber
Cukup setel 2 baris ini di
TextInputLayout
file XML Anda:sumber
Solusi ini menggunakan
Kotlin
dan menunjukkan jumlah karakter yang tersisa. Selain itu, jika jumlah karakter saat ini melebihi batas 50, warna teks akan berubah menjadi merah.Kotlin
Juga, jangan lupa untuk menambahkan
TextWatcher
ke AndaEditText
sumber
Anda dapat menambahkan penghitung ke TextInputEditText yang dibungkus dalam TextInputLayout. Seperti yang Anda lihat di contoh,
counterEnabled
mengaktifkan fitur ini dancounterMaxLengh
menentukan jumlah karakternya.sumber
Saya menemui masalah yang sama dan saya mencoba metode Cameron. Ini berfungsi tetapi ada bug kecil: Jika pengguna menggunakan salin dan tempel, maka gagal menghitung karakter. Jadi saya sarankan untuk dilakukan setelah teks diubah, seperti di bawah ini:
sumber
Gunakan android: maxLength = "140"
Seharusnya itu berhasil. :)
Semoga membantu
sumber
Coba lakukan sesuatu seperti ini.
Solusi ini mungkin lebih berkinerja dibandingkan dengan mendapatkan CharSequence.length. Setiap kali Anda mengetuk soft keyboard, acara akan menyala; oleh karena itu, jika Anda melakukan panjang, itu akan menghitung CharSequence setiap kali, yang mungkin melambat jika Anda mulai masuk ke CharSequnce besar. Pendengar acara pada perubahan teks menyesuaikan hitungan sebelum dan sesudah. Ini berfungsi dengan baik untuk nilai kenaikan dan penurunan
sumber
coba ini
`
sumber
Cara yang jelas;
sumber