Saya ingin secara otomatis menampilkan keyboard lunak ketika sebuah EditText
fokus (jika perangkat tidak memiliki keyboard fisik) dan saya memiliki dua masalah:
Ketika saya
Activity
ditampilkan, sayaEditText
fokus tetapi keyboard tidak ditampilkan, saya harus mengklik lagi untuk menampilkan keyboard (itu harus ditampilkan ketika sayaActivity
ditampilkan).Dan ketika saya mengklik selesai pada keyboard, keyboard diberhentikan tetapi
EditText
tetap fokus dan Anda tidak mau (karena edit saya selesai).
Untuk melanjutkan, masalah saya adalah memiliki sesuatu yang lebih seperti pada iPhone: yang menjaga sinkronisasi keyboard dengan EditText
keadaan saya (fokus / tidak fokus) dan tentu saja tidak menghadirkan keyboard-lunak jika ada yang fisik.
android
keyboard
focus
android-edittext
android-softkeyboard
Ludovic Landry
sumber
sumber
Jawaban:
Untuk memaksa keyboard lunak muncul, Anda dapat menggunakan
Dan untuk menghilangkan fokus
EditText
, sayangnya Anda harus memiliki bonekaView
untuk meraih fokus.saya harap ini membantu
Untuk menutupnya bisa Anda gunakan
Ini berfungsi untuk menggunakannya dalam dialog
sumber
yourEditText.requestFocus()
dijelaskan di sini: stackoverflow.com/questions/8991522/…Saya memiliki masalah yang sama. Segera setelah perubahan editText VISIBILITY dari GONE ke VISIBLE, saya harus mengatur fokus dan menampilkan keyboard lunak. Saya mencapai ini menggunakan kode berikut:
Ini bekerja untuk saya dengan keterlambatan 100 ms, tetapi gagal tanpa penundaan atau dengan hanya keterlambatan 1 ms.
Bagian kode yang dikomentari menunjukkan pendekatan lain, yang hanya berfungsi pada beberapa perangkat. Saya menguji pada OS versi 2.2 (emulator), 2.2.1 (perangkat nyata) dan 1.6 (emulator).
Pendekatan ini menyelamatkan saya dari banyak rasa sakit.
sumber
EditText
. Untuk orang lain yang membaca ini, alih-alih membuat yang baruHandler
Anda juga bisa menggunakanView.postDelayed()
metode padayourEditText
widget itu sendiri.Untuk menyebabkan keyboard muncul, gunakan
Metode ini lebih dapat diandalkan daripada memanggil InputMethodManager secara langsung.
Untuk menutupnya, gunakan
sumber
InputMethodManager
? (Untuk satu, itu tidak berhasil, tidak seperti solusi raukodraug.)Ketika tidak ada lagi yang berfungsi, paksalah untuk ditampilkan :
Dan kemudian, jika Anda ingin menutupnya, di onPause () misalnya, Anda dapat menghubungi:
sumber
Kode berikut dijarah dari kode sumber Google 4.1 untuk SearchView. Tampaknya bekerja, baik pada versi Android yang lebih rendah juga.
Kemudian di samping itu, kode berikut perlu ditambahkan ketika Kontrol / Kegiatan dibuat. (Dalam kasus saya ini adalah kontrol komposit, bukan aktivitas).
sumber
setImeVisibility(hasFocus)
?android:windowSoftInputMode="stateAlwaysVisible"
-> dalam File manifes.edittext.requestFocus();
-> dalam kode.Ini akan membuka keyboard lunak di mana teks edit memiliki fokus permintaan saat aktivitas muncul.
sumber
manifest
juga!Saya baru saja beruntung dalam beberapa kasus sederhana dengan kode di bawah ini. Saya belum menyelesaikan semua pengujian tetapi ....
Dan presto keyboard muncul.
sumber
Anda dapat mencoba untuk memaksa keyboard lunak muncul, itu berfungsi untuk saya:
sumber
Terkadang jawaban raukodraug tidak berfungsi. Saya telah membuatnya dengan beberapa cobaan dan kesalahan:
Dan bagian EditText :
sumber
Untuk menyembunyikan keyboard, gunakan yang ini:
dan untuk menampilkan keyboard:
sumber
onStart()
, dan Anda dapat menggunakannyagetDialog().getWindow()
sebagai alternatifgetActivity().getWindow()
.Dan untuk Kotlin cukup gunakan ekstensi ini:
sumber
Untuk fragmen, tentu ini berfungsi:
sumber
showSoftInput
sama sekali tidak bekerja untuk saya.Saya pikir saya perlu mengatur mode input: (di sini di komponen Activity di manifes)
sumber
Percaya atau tidak masalah saya dengan Soft Keyboard diselesaikan ketika saya menemukan bahwa animasi Aktivitas dapat menonaktifkan Soft Keyboard. Ketika Anda memanggil niat dengan
dan
Itu dapat menyembunyikan Soft Keyboard dan tidak ada cara untuk menunjukkannya.
sumber
Saya memiliki masalah yang sama di berbagai situasi yang berbeda, dan solusi yang saya temukan bekerja di beberapa tetapi tidak bekerja di yang lain jadi di sini adalah solusi gabungan yang bekerja di sebagian besar situasi yang saya temukan:
sumber
sumber
Saya menggabungkan semuanya di sini dan bagi saya itu berfungsi:
sumber
Ini berhasil untuk saya. Anda dapat mencoba ini juga untuk menampilkan keyboard:
sumber
cuplikan kode. . .
sumber
Kotlin
ekstensi untuk menampilkan keyboard saat fokus.Ini adalah kombinasi dari tanggapan sebelumnya, yang mana terlalu panjang atau tidak lengkap.
Ekstensi ini mem-posting runnable pada antrian pesan yang menampilkan keyboard lunak setelah meminta fokus:
Sebut saja dari tampilan apa pun bila perlu setelah itu:
sumber
cukup tambahkan android: windowSoftInputMode = "stateHidden" di file manifes ...
sumber
sumber
Di dalam manifes Anda:
android:windowSoftInputMode="stateAlwaysVisible"
- Keyboard yang awalnya diluncurkan.android:windowSoftInputMode="stateAlwaysHidden"
- Keyboard awalnya tersembunyi.Saya suka menggunakan juga
"adjustPan"
karena ketika keyboard diluncurkan maka layar otomatis menyesuaikan.sumber
Cukup tambahkan baris ini di tampilan EditText Anda:
dan TADA - keyboard mulai muncul secara otomatis!
Saya memiliki masalah yang sama dan menemukan solusi sederhana dan aneh ini.
Seperti yang telah disebutkan di sini oleh user3392439, penampilan keyboard pada fokus entah bagaimana terhubung dengan keberadaan komponen gulir dalam file XML.
Bahkan kehadiran tampilan EditText lain yang terdiri dari baris yang disebutkan di atas dalam XML yang sama membuat keyboard tampil tidak peduli yang mana dari EditText yang saat ini difokuskan.
Jika Anda memiliki setidaknya satu tampilan yang terlihat terdiri dari komponen gulir dalam file XML Anda - keyboard akan muncul secara otomatis saat fokus.
Jika tidak ada gulir - maka Anda perlu mengklik EditText untuk membuat keyboard muncul.
sumber
requesFocus()
dari dalam klik penangan dan ini adalah satu-satunya cara selain showSoftInput SHOW_FORCED eksplisitSemua solusi yang diberikan di atas ( InputMethodManager interaksi di OnFocusChangeListener.onFocusChange pendengar melekat Anda EditText berfungsi dengan baik jika Anda memiliki satu pengeditan dalam aktivitas.
Dalam kasus saya, saya memiliki dua suntingan.
Saya telah mengamati bahwa onFocusChange dipicu untuk tvX dengan hasFocus = true (keyboard ditampilkan) tetapi kemudian untuk TVY dengan hasFocus = true (keyboard disembunyikan). Pada akhirnya, tidak ada keyboard yang terlihat.
Solusi umum harus memiliki pernyataan yang benar jika "tampilkan keyboard jika teks EditText memiliki fokus"
sumber
Di bagian onResume () Anda dari Kegiatan, Anda dapat memanggil metode bringKeyboard ();
sumber
WidgetUtils.showKeyboard
? Itu yang paling penting di sini.Tak satu pun dari Jawaban itu yang berfungsi untuk saya. Ini cara sederhana.
Baru saja menunda metode requestFocus () selama 400 ms.
sumber
Saya menemukan perilaku aneh, karena di salah satu aplikasi saya, keyboard lunak itu secara otomatis ditampilkan saat memasukkan aktivitas (ada editText.requestFocus () di onCreate).
Pada penggalian lebih lanjut, saya menemukan bahwa ini karena ada ScrollView di sekitar tata letak. Jika saya menghapus ScrollView, perilaku tersebut seperti yang dijelaskan dalam pernyataan masalah asli: hanya dengan mengklik editText yang sudah difokuskan tidak muncul keyboard lunak.
Jika itu tidak berhasil untuk Anda, coba masukkan ScrollView - toh tidak berbahaya.
sumber
Saya memiliki masalah yang sama menggunakan animasi tampilan . Jadi saya telah meletakkan pendengar animasi untuk memastikan saya akan menunggu sampai animasi berakhir sebelum mencoba meminta akses keyboard pada edittext yang ditampilkan.
sumber
Saya setuju dengan raukodraug karenanya untuk menggunakan dalam swithview Anda harus meminta / menghapus fokus seperti ini:
Salam.
sumber