Android KEYBOARD_12KEY、KEYBOARD_QWERTY 和 KEYBOARD_NOKEYS 的软输入行为

Android soft input behavior for KEYBOARD_12KEY, KEYBOARD_QWERTY, and KEYBOARD_NOKEYS

我想知道这里是否有人知道在什么情况下 Android 会向用户显示屏幕软键盘,以及 Android 如何考虑可用的不同类型的硬件键盘(KEYBOARD_12KEYKEYBOARD_QWERTYKEYBOARD_NOKEYS).

https://developer.android.com/reference/android/content/res/Configuration#keyboard

问题(第 1 部分)- 有人可以填写以下内容

注意 ??? = [show | hide | do nothing | other]

场景 1)
用户点击 AppCompatEditText 并有 KEYBOARD_NOKEYS, Android 将 ??? 软输入

场景 2)
用户点击 AppCompatEditText 并有 KEYBOARD_12KEY, Android 将 ??? 软输入

场景 3)
用户点击 AppCompatEditText 并有 KEYBOARD_QWERTY, Android 将 ??? 软输入

问题(第 2 部分)- 是否可以禁用此内置行为

既然你已经填满了??? = [show | hide | do nothing | other]的所有空白,是否可以禁用这些内置的Android行为?而是通过手动检测设备上的硬件键盘类型和 showing/hiding View.OnFocusChangeListener?

中的软键盘,将它们全部替换为自定义版本

是否显示软键盘实际上是由软键盘决定的。软键盘有一个函数InputMethodService.onEvaluateInputViewShown()。当有机会显示软键盘时调用此函数。如果它 returns 为真,将显示键盘。默认实现是查看是否存在硬件键盘,如果存在则不显示。但是软键盘可以覆盖它来显示。

所有这一切都完全取决于软键盘应用程序 - 无论他们使用哪种键盘(因此行为可以根据用户喜欢的键盘而改变)。没有任何其他方法可以覆盖它。