Saya menunjukkan kotak input menggunakan AlertDialog
. Bagian EditText
dalam dialog itu sendiri secara otomatis fokus ketika saya menelepon AlertDialog.show()
, tetapi keyboard lunak tidak secara otomatis ditampilkan.
Bagaimana cara membuat soft keyboard ditampilkan secara otomatis saat dialog ditampilkan? (dan tidak ada keyboard fisik / perangkat keras). Mirip dengan bagaimana ketika saya menekan tombol Cari untuk menjalankan pencarian global, keyboard lunak ditampilkan secara otomatis.
android
keyboard
android-edittext
soft-keyboard
Randy Sugianto 'Yuku'
sumber
sumber
Jawaban:
Anda dapat membuat pendengar fokus pada
EditText
padaAlertDialog
, lalu mendapatkanAlertDialog
'sWindow
. Dari sana, Anda dapat menampilkan keyboard lunak dengan meneleponsetSoftInputMode
.sumber
final AlertDialog dialog = builder.create()
dan kemudianshow
pada dialog, bukan pembangun.Untuk menunjukkan penggunaan keyboard:
Untuk menyembunyikan penggunaan keyboard:
sumber
Anda dapat meminta keyboard lunak tepat setelah membuat dialog (tes pada SDK - r20)
sumber
Saya memiliki masalah yang sama dan menyelesaikannya dengan kode berikut. Saya tidak yakin bagaimana kelakuannya pada ponsel dengan keyboard perangkat keras.
sumber
Saya menemukan contoh ini http://android-codes-examples.blogspot.com/2011/11/show-or-hide-soft-keyboard-on-opening.html . Tambahkan kode berikut sebelum
alert.show()
.sumber
atau
sumber
stateHidden
dan ketika saya mendeteksi pengguna membuat item baru maka saya menampilkan keyboard menggunakan baris kode yang telah Anda sebutkan. :) Sekali lagi terima kasih.((Activity) context).getWindow()....
.Potongan kode dari jawaban lain berfungsi, tetapi tidak selalu jelas di mana menempatkannya dalam kode, terutama jika Anda menggunakan
AlertDialog.Builder
dan mengikuti tutorial dialog resmi karena tidak menggunakanfinal AlertDialog ...
ataualertDialog.show()
.Lebih disukai
Karena SOFT_INPUT_STATE_ALWAYS_VISIBLE akan menyembunyikan keyboard jika fokus beralih dari EditText, di mana SHOW_FORCED akan menjaga keyboard tetap ditampilkan sampai diberhentikan secara eksplisit, bahkan jika pengguna kembali ke layar beranda atau menampilkan aplikasi terbaru.
Di bawah ini adalah kode kerja untuk AlertDialog yang dibuat menggunakan tata letak khusus dengan EditText yang didefinisikan dalam XML. Ini juga mengatur keyboard untuk memiliki tombol "pergi" dan memungkinkannya untuk memicu tombol positif.
alert_dialog.xml:
AlertDialog.java:
sumber
Nah, ini postingan yang lumayan lama, masih ada sesuatu untuk ditambahkan.
Ini adalah 2 metode sederhana yang membantu saya mengendalikan keyboard dan berfungsi dengan sempurna:
Tampilkan keyboard
Sembunyikan keyboard
sumber
getCurrentFocus()
?Activity
.Izinkan saya menunjukkan beberapa info tambahan ke solusi yuku, karena saya merasa sulit untuk mengaktifkannya! Bagaimana saya mendapatkan objek AlertDialog dari AlertDialog.Builder saya? Ya, ini hasil dari
alert.show()
eksekusi saya :sumber
Lihatlah diskusi ini yang menangani penyembunyian secara manual dan menunjukkan IME. Namun, perasaan saya adalah bahwa jika fokus
EditText
tidak membawa IME naik itu karena Anda memanggilAlertDialog.show()
AndaOnCreate()
atau metode lain yang ditimbulkan sebelum layar benar-benar disajikan. Memindahkannya keOnPostResume()
harus memperbaikinya dalam kasus itu saya percaya.sumber
Ya, Anda bisa melakukannya dengan
setOnFocusChangeListener
itu akan membantu Anda.sumber
Saya tahu pertanyaan ini sudah tua karena saya pikir menggunakan fungsi ekstensi adalah cara yang lebih cantik untuk menampilkan keyboard untuk teks edit
di sini adalah metode yang saya gunakan untuk menunjukkan keyboard untuk edittext.
kode kotlin: hanya perlu menelepon
edittext.showKeyboard()
kode java:
sumber
Jika ada yang mendapatkan:
Coba tambahkan konteks untuk panggilan getSystemService.
Begitu
sumber
Pertanyaan aslinya menyangkut Dialog dan EditTeks saya ada di tampilan reguler. Bagaimanapun, saya curiga ini seharusnya bekerja untuk sebagian besar dari Anda juga. Jadi, inilah yang bekerja untuk saya (metode nilai tertinggi yang disarankan di atas tidak membantu saya) Berikut EditView kustom yang melakukan ini (subklasifikasi tidak perlu, tapi saya merasa nyaman untuk keperluan saya karena saya ingin juga mengambil fokus ketika tampilan menjadi terlihat).
Ini sebenarnya sebagian besar sama dengan jawaban tidbeck. Saya sebenarnya tidak memperhatikan jawabannya sama sekali karena itu nol suara. Kemudian saya akan hanya mengomentari posnya, tetapi itu akan terlalu lama, jadi saya akhirnya melakukan posting ini. tidbeck menunjukkan bahwa dia tidak yakin cara kerjanya dengan perangkat yang memiliki keyboard. Saya dapat mengkonfirmasi bahwa perilaku tersebut tampaknya persis sama dalam kedua kasus tersebut. Karena itu pada mode potret keyboard perangkat lunak akan muncul dan pada landscape tidak. Memiliki keyboard fisik meluncur keluar atau tidak ada bedanya di ponsel saya.
Karena, saya pribadi menemukan perilaku sedikit canggung saya memilih untuk menggunakan:
InputMethodManager.SHOW_FORCED
. Ini berfungsi seperti yang saya inginkan. Keyboard menjadi terlihat terlepas dari orientasinya, namun, setidaknya pada perangkat saya itu tidak muncul jika keyboard perangkat keras telah meluncur keluar.sumber
Masalahnya adalah karena tempat di mana Anda memasukkan teks awalnya disembunyikan (atau bersarang atau sesuatu), AlertDialog secara otomatis mengatur bendera
WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM
atauWindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
sehingga hal-hal tidak memicu input lunak untuk muncul.Cara untuk memperbaikinya adalah dengan menambahkan yang berikut:
sumber
coba dan gunakan:
sumber
Untuk menunjukkan keyboard, bagi saya, saya harus melakukan hal berikut
Android TextField: mengatur fokus + input lunak secara terprogram
Intinya solusinya adalah sebagai berikut
dimana
ShowKeyboard
adalahSetelah input berhasil, saya juga memastikan saya menyembunyikan keyboard
sumber
Masukkan metode ini di kelas Util Anda dan gunakan di mana saja.
Kotlin
Jawa
sumber
Saya membuat fungsi ekstensi kotlin-esqe yang bagus kalau ada yang tertarik
sumber
Ini adalah contoh yang baik untuk Anda:
sumber
Mengapa jawaban ini - Karena solusi di atas akan menampilkan keyboard Anda tetapi itu tidak akan hilang jika Anda mengklik di tempat lain itu
EditText
. Jadi, Anda perlu melakukan sesuatu untuk membuat keybaord hilang ketikaEditText
kehilangan fokus.Anda dapat mencapai ini dengan melakukan langkah-langkah berikut:
Jadikan tampilan induk (tampilan konten aktivitas Anda) dapat diklik dan fokus dengan menambahkan atribut berikut
Terapkan metode hideKeyboard ()
Terakhir, atur onFocusChangeListener dari edittext Anda.
sumber
Ini agak sulit. Saya melakukannya dengan cara ini dan itu berhasil.
1.Pada panggilan pertama untuk menyembunyikan Input lunak dari jendela. Ini akan menyembunyikan input lunak jika keyboard lunak terlihat atau tidak melakukan apa-apa jika tidak.
2. Tampilkan dialog Anda
3.Lalu panggil untuk beralih input lunak.
kode:
sumber
Coba ini
sumber
Sudah banyak yang mencoba tetapi inilah yang bekerja untuk saya (kotlin):
sumber
Melihat https://stackoverflow.com/a/39144104/2914140 Saya sedikit menyederhanakan:
Itu lebih baik daripada https://stackoverflow.com/a/11155404/2914140 :
karena ketika Anda menekan tombol Rumah dan pindah ke layar beranda, keyboard akan tetap terbuka.
sumber
Saya menyebutnya di onCreate () untuk menampilkan keyboard secara otomatis, ketika saya datang di Activity.
sumber