Mer*_*n E 3 android android-appcompat android-edittext inputmethodmanager
我的应用程序在很多设备上运行良好。但自从在我自己的 Pixel 上升级到 Android 12 后,在调用 showSoftInput 或点击 Bottomsheet 中的 AppCompatEditText 时,会发生以下情况。
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager;
imm.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT)
Run Code Online (Sandbox Code Playgroud)
Logcat 警告(应用程序中没有任何反应):
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.
Run Code Online (Sandbox Code Playgroud)
我尝试了很多方法,例如请求焦点、使用 SHOW_FORCE 的 showSoftInput 但没有任何效果。
从 Android 11 (API 30) 开始,您可以使用 inset 的 API show()手动强制 ime/键盘显示
myAppCompatEditText.windowInsetsController.show(WindowInsetsCompat.Type.ime())
Run Code Online (Sandbox Code Playgroud)
并将其隐藏:
myAppCompatEditText.windowInsetsController.hide(WindowInsetsCompat.Type.ime())
Run Code Online (Sandbox Code Playgroud)
对于低于 API 30 的目标 API,这是使用以下Compat版本向后移植的:
WindowInsetsControllerCompat(window, myAppCompatEditText)
.show(WindowInsetsCompat.Type.ime())
WindowInsetsControllerCompat(window, myAppCompatEditText)
.hide(WindowInsetsCompat.Type.ime())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2616 次 |
| 最近记录: |