Saya memiliki di EditText
mana saya mengatur properti berikut sehingga saya dapat menampilkan tombol selesai pada keyboard ketika pengguna mengklik EditText.
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
Ketika pengguna mengklik tombol selesai pada keyboard layar (selesai mengetik) saya ingin mengubah RadioButton
keadaan.
Bagaimana saya bisa melacak tombol selesai ketika ditekan dari keyboard layar?
android
android-edittext
ime
b-man
sumber
sumber
Jawaban:
Saya berakhir dengan kombinasi jawaban Roberts dan chirags:
Pembaruan: Kode di atas beberapa kali akan mengaktifkan panggilan balik dua kali. Alih-alih, saya memilih kode berikut, yang saya dapatkan dari klien obrolan Google:
sumber
isPreparedForSending()
dan mengapa metode kedua kembalitrue
?Coba ini, ini akan bekerja untuk apa yang Anda butuhkan:
sumber
<EditText android:imeOptions="actionDone" android:inputType="text"/>
Kode Java adalah:
sumber
Saya tahu pertanyaan ini sudah lama, tetapi saya ingin menunjukkan apa yang berhasil untuk saya.
Saya mencoba menggunakan kode sampel dari situs web Pengembang Android (ditunjukkan di bawah), tetapi tidak berhasil. Jadi saya memeriksa kelas EditorInfo, dan saya menyadari bahwa nilai integer IME_ACTION_SEND ditetapkan sebagai
0x00000004
.Kode contoh dari Pengembang Android:
Jadi, saya menambahkan nilai integer ke
res/values/integers.xml
file saya .Kemudian, saya mengedit file layout saya
res/layouts/activity_home.xml
sebagai berikutDan kemudian, kode sampel berfungsi.
sumber
Lebih detail tentang cara mengatur OnKeyListener, dan minta dia mendengarkan tombol Done.
Pertama-tama tambahkan OnKeyListener ke bagian mengimplementasikan kelas Anda. Kemudian tambahkan fungsi yang didefinisikan dalam antarmuka OnKeyListener:
Diberikan objek EditText:
sumber
Sementara kebanyakan orang telah menjawab pertanyaan secara langsung, saya ingin menguraikan lebih lanjut tentang konsep di baliknya. Pertama, saya tertarik pada IME ketika saya membuat Aktivitas Login default. Ini menghasilkan beberapa kode untuk saya yang termasuk yang berikut:
Anda seharusnya sudah terbiasa dengan atribut inputType. Ini hanya memberi tahu Android jenis teks yang diharapkan seperti alamat email, kata sandi, atau nomor telepon. Daftar lengkap nilai yang mungkin dapat ditemukan di sini .
Namun, atribut
imeOptions="actionUnspecified"
itulah yang saya tidak mengerti tujuannya. Android memungkinkan Anda untuk berinteraksi dengan keyboard yang muncul dari bawah layar saat teks dipilih menggunakanInputMethodManager
. Di sudut bawah keyboard, ada tombol, biasanya tertulis "Next" atau "Done", tergantung pada bidang teks saat ini. Android memungkinkan Anda untuk menyesuaikan ini menggunakanandroid:imeOptions
. Anda dapat menentukan tombol "Kirim" atau tombol "Berikutnya". Daftar lengkapnya dapat ditemukan di sini .Dengan itu, Anda dapat mendengarkan penekanan pada tombol tindakan dengan menentukan a
TextView.OnEditorActionListener
untukEditText
elemen. Seperti dalam contoh Anda:Sekarang dalam contoh saya, saya memiliki
android:imeOptions="actionUnspecified"
atribut. Ini berguna ketika Anda ingin mencoba masuk pengguna ketika mereka menekan tombol enter. Di Aktivitas Anda, Anda dapat mendeteksi tag ini dan kemudian mencoba login:sumber
Berkat chikka.anddev dan Alex Cohn di Kotlin itu adalah:
Di sini saya memeriksa
Enter
kunci, karena itu mengembalikanEditorInfo.IME_NULL
bukanIME_ACTION_DONE
.Lihat juga Android imeOptions = "actionDone" tidak berfungsi . Menambahkan
android:singleLine="true"
dalamEditText
.sumber
Solusi Kotlin
Cara dasar untuk menanganinya di Kotlin adalah:
Perpanjangan Kotlin
Gunakan ini untuk hanya memanggil
edittext.onDone{/*action*/}
kode utama Anda. Membuat kode Anda jauh lebih mudah dibaca dan dipeliharaJangan lupa untuk menambahkan opsi ini ke edittext Anda
sumber
setOnEditorActionListener
, meskipun. Mungkin itu hanya masalah pengaturan konfigurasi lokal, tetapi linter saya benar- benar ingin saya menambahkanelse
cabang juga untuk menerima "true" sebagai pernyataan kembali dari pendengar (sebagai lawan dariif
-block).Jika Anda menggunakan Android Annotations https://github.com/androidannotations/androidannotations
Anda dapat menggunakan anotasi @EditorAction
sumber