首页 > 解决方案 > KEYBOARD_12KEY、KEYBOARD_QWERTY 和 KEYBOARD_NOKEYS 的 Android 软输入行为

问题描述

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

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

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

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

场景1)
用户点击aAppCompatEditText和has KEYBOARD_NOKEYS,Android会???软输入

场景 2)
用户点击 aAppCompatEditText和 has KEYBOARD_12KEY,Android 会???软输入

场景 3)
用户点击 aAppCompatEditText和 has KEYBOARD_QWERTY,Android 会???软输入

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

现在您已经填写了所有的空白??? = [show | hide | do nothing | other],是否可以禁用这些内置的 Android 行为?而是通过手动检测设备上的硬件键盘类型并将软键盘显示/隐藏在View.OnFocusChangeListener?

标签: androidandroid-softkeyboardandroid-input-methodandroid-hardware-keyboard

解决方案


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

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


推荐阅读