Android 12忽略showSoftInput,因为不提供视图

nuypyhwy  于 2023-02-17  发布在  Android
关注(0)|答案(1)|浏览(702)

我的应用程序在很多设备上都运行良好。但自从在我自己的Pixel上升级到Android 12后,当调用showSoftInput或只是点击Bottomsheet中的AppCompatEditText时,会发生以下情况。

val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager;
imm.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT)

Logcat警告(应用程序中无任何React):

Ignoring showSoftInput() as view=androidx.appcompat.widget.AppCompatEditText{b5311a0 VFED..CL. .F.P..ID 84,0-996,118 #7f0900a7 app:id/et_bottomsheet aid=1073741827} is not served.

我尝试了很多方法,比如请求焦点,使用SHOW_FORCE显示软输入,但是没有任何效果。

kiayqfof

kiayqfof1#

从Android 11(API 30)开始,您可以使用inset的API show()手动强制显示输入法/键盘

myAppCompatEditText.windowInsetsController.show(WindowInsetsCompat.Type.ime())

并将其隐藏为:

myAppCompatEditText.windowInsetsController.hide(WindowInsetsCompat.Type.ime())

对于API 30以下的目标API,使用Compat版本进行后移植:

WindowInsetsControllerCompat(window, myAppCompatEditText)
                                     .show(WindowInsetsCompat.Type.ime())

WindowInsetsControllerCompat(window, myAppCompatEditText)
                                     .hide(WindowInsetsCompat.Type.ime())

相关问题