Saya perlu EditText
yang terlihat seperti ini diError:
memanggil onError yang terlihat seperti ini sebagai gantinya:
Catatan: aplikasi ini berjalan pada SDK 19 (4.4.2)
min SDK adalah 1
Apakah ada metode yang mirip dengan setError yang melakukan ini secara otomatis, atau apakah saya harus menulis kode untuk itu?
Terima kasih
EditText
. Kemungkinan besar, Anda akan membutuhkan sesuatu yang membungkusEditText
atau menambahnya. Lihat github.com/rengwuxian/MaterialEditText .Jawaban:
Tidak perlu menggunakan perpustakaan pihak ketiga karena Google memperkenalkan
TextInputLayout
sebagai bagian daridesign-support-library
.Berikut contoh dasar:
Tata letak
Catatan: Dengan menetapkan
app:errorEnabled="true"
sebagai atribut, atributTextInputLayout
itu tidak akan mengubah ukurannya setelah kesalahan ditampilkan - jadi pada dasarnya memblokir ruang.Kode
Dalam rangka untuk menunjukkan kesalahan di bawah
EditText
Anda hanya perlu panggilan#setError
padaTextInputLayout
(TIDAK pada anakEditText
):Hasil
Untuk menyembunyikan kesalahan dan mengatur ulang warna cukup panggil
til.setError(null)
.Catatan
Untuk menggunakan,
TextInputLayout
Anda harus menambahkan yang berikut kebuild.gradle
dependensi Anda :Pengaturan warna khusus
Secara default garis
EditText
akan berwarna merah. Jika Anda perlu menampilkan warna berbeda, Anda dapat menggunakan kode berikut segera setelah Anda meneleponsetError
.Untuk menghapusnya cukup panggil
clearColorFilter
fungsi, seperti ini:sumber
textInputLayout.setError("Error messsage")
warna yangEditText
seharusnya menjadi merah. Untuk meresetnya, cukup menelepontextInputLayout.setError(null)
.editText.getBackground().setColorFilter(getResources().getColor(R.color.red_500_primary), PorterDuff.Mode.SRC_ATOP);
tidak diperlukan lagi dengan perpustakaan dukungan terbaruEditText
, bukanTextInputLayout
. Saya melihat jawaban ini dan masih tidak tahu apa yang perlu saya ubah. Sangat mudah untuk dilewatkan.Panggil
myTextInputLayout.setError()
alih-alihmyEditText.setError()
.Wadah dan kontainmen ini memiliki fungsi ganda pada kesalahan pengaturan. Fungsionalitas yang Anda butuhkan adalah salah satu wadah itu. Tapi Anda bisa memerlukan versi minimal 23 untuk itu.
sumber
Anda
EditText
harus dibungkus dengan: aTextInputLayout
Untuk mendapatkan pesan kesalahan seperti yang Anda inginkan, atur kesalahan ke
TextInputLayout
Anda harus menambahkan ketergantungan pustaka dukungan desain. Tambahkan baris ini di dependensi gradle Anda
sumber
Jawaban reVerse bagus, tetapi tidak menunjukkan bagaimana cara menghapus tooltip kesalahan mengambang semacam itu
Anda harus
edittext.setError(null)
menghapusnya.Juga, seperti yang ditunjukkan seseorang, Anda tidak perlu
TextInputLayout.setErrorEnabled(true)
Tata letak
Kode
sumber
sumber
Jika ada yang masih menghadapi kesalahan dengan menggunakan pustaka desain google seperti yang disebutkan dalam jawaban, silakan gunakan ini seperti yang dikomentari oleh @h_k yaitu -
Alih-alih memanggil setError pada TextInputLayout , Anda mungkin menggunakan setError pada EditText itu sendiri.
sumber
sumber