Pada perangkat Android yang menggunakan papan ketik lunak, saya ingin mencegah tampilan pengeditan papan ketik layar penuh (ditampilkan di bawah) muncul ketika dalam mode lansekap (yaitu, saya hanya ingin melihat papan ketik itu sendiri dan pandangan saya di belakangnya).
Saya berasumsi ini dapat dicapai menggunakan setExtractViewShown(false)
metode aktif InputMethodService
, tetapi saya tidak dapat mengakses contoh default ini dan tidak ingin menerapkan metode input khusus.
Diedit untuk menambahkan: tampilan yang akan dituju bukan TextView
( View
dengan InputConnection
penerapan kustom ), jadi android:imeOptions="flagNoExtractUi"
tidak akan berfungsi di sini.
flagNoExtractUi
atauIME_FLAG_NO_EXTRACT_UI
. Namun, dalam dokumentasi untukIME_FLAG_NO_EXTRACT_UI
, yang sesuai denganflagNoExtractUi
, itu menyatakan bahwa "Menggunakan flag ini tidak disarankan dan mungkin menjadi usang di masa depan", jadiflagNoFullscreen
adalah opsi yang disarankan.Jawaban:
Saya akhirnya menjawab pertanyaan saya sendiri:
Ekstrak UI (yaitu mode pengeditan layar penuh) dapat dinonaktifkan pada titik di mana koneksi input dihubungkan:
sumber
outAttrs.imeOptions |= EditorInfo.IME_FLAG_NO_EXTRACT_UI;
Untuk melakukannya, navigasikan ke aktivitas xml dan rekatkan
android:imeOptions="flagNoExtractUi"
dalam kode Anda. Tapi di mana harus ditempelkan? Lihat kode contoh aktivitas xml dan lihat pada EditText:Jika Anda ingin lebih banyak opsi penyesuaian untuk keyboard, lihat http://developer.android.com/guide/topics/ui/controls/text.html
sumber
tambahkan properti
android:imeOptions="flagNoExtractUi"
ke masing-masingEditText
dalamXML
file Anda .sumber
Jawaban di atas membantu saya mencari solusi untuk EditText yang ditambahkan secara dinamis:
sumber
Gunakan
android:imeOptions="flagNoFullscreen"
untuk mencapai fitur itu.sumber
IME_FLAG_NO_EXTRACT_UI
, yang sesuai denganflagNoExtractUi
, itu menyatakan bahwa "Menggunakan flag ini tidak disarankan dan mungkin menjadi usang di masa depan", jadiflagNoFullscreen
adalah opsi yang disarankan.Selain itu, jika Anda ingin menggabungkan beberapa programatik imeOptions, Anda dapat menggunakan | sintaksis.
Misalnya, untuk menonaktifkan tampilan edit layar penuh dalam lanskap dan mengganti kunci "Berikutnya" dengan "OK" (ACTION_DONE) di keyboard, Anda dapat menggunakan:
sumber
Jika Anda memodifikasi IME secara langsung, Anda dapat mencegahnya menampilkan ExtractedView dengan menimpa
onUpdateExtractingVisibility
:sumber
Saya tahu ini agak terlambat, tetapi bagi siapa saja yang masih tertarik, inilah solusinya: Dalam kasus saya, saya memiliki aktivitas lanskap yang berisi EditText di atasnya dan saya perlu menerapkan fitur pelengkapan otomatis dalam Kegiatan pencarian ini , yang tumpang tindih keyboard menyebabkan masalah bahwa pengguna tidak dapat melihat hasil RecyclerView . Jadi saya akhirnya memiliki EditText ini di tata letak saya:
Bersulang!
sumber
Solusi saya:
sumber
Kamu bisa memakai :
di edittext Anda
sumber
Anda dapat menelepon untuk menyembunyikan keyboard lunak dan menghapus fokus dari tampilan pencarian.
sumber