我想知道这里是否有人知道在什么情况下Android会向用户显示屏幕上的软键盘,以及Android如何考虑可用的不同类型的硬件键盘(KEYBOARD_12KEY
,KEYBOARD_QWERTY
和KEYBOARD_NOKEYS
)。
https://developer.android.com/reference/android/content/res/Configuration#keyboard
请注意??? = [show | hide | do nothing | other]
场景1)
用户点击AppCompatEditText
并拥有KEYBOARD_NOKEYS
,Android将???
软输入
场景2)
用户点击AppCompatEditText
并拥有KEYBOARD_12KEY
,Android将???
软输入
场景3)
用户点击AppCompatEditText
并拥有KEYBOARD_QWERTY
,Android将???
软输入
现在您已经填写了??? = [show | hide | do nothing | other]
的所有空白,是否可以禁用这些内置的Android行为?而是通过手动检测设备上的硬件键盘类型并在View.OnFocusChangeListener
中显示/隐藏软键盘,将它们全部替换为自定义版本?
是否显示软键盘实际上是由软键盘决定的。软键盘具有InputMethodService.onEvaluateInputViewShown()函数。当有机会显示软键盘时调用此功能。如果返回true,将显示键盘。默认实现是查看是否存在硬件键盘,如果存在则不显示。但软键盘无论如何都可以覆盖它。
所有这一切完全取决于软键盘应用程序 - 无论他们使用哪种键盘(因此行为可以根据用户喜欢的键盘而改变)。没有别的办法可以覆盖它。