我有一个应用程序,我需要创建一个自定义键盘,因为条形码扫描仪被归类为硬件键盘,而硬件键盘会禁用软键盘。问题是当没有扫描器连接时,不需要显示内置的软键盘。我有一个按钮来显示自定义键盘,它还将使用
InputMethodManager
隐藏默认键盘。
((InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(advText.getWindowToken(), 0);
(advText是EditText的扩展版本)
我尝试将这行代码放在EditText的onFocusChanged方法中,但是没有任何反应。如果使用setInputType(InputType.TYPE_NULL);则Android键盘永远不会显示,但EditText不会显示光标或来自自定义键盘的任何内容(但是我知道键被存储了,因为我的“完成”键很好地将文本发送到其他位置)。
我可以禁用此应用程序的Android键盘,只要EditText显示光标,并且仅在使用按钮时显示自定义键盘即可。
我查看了这些答案,但没有找到解决方案。
编辑:
我的当前解决方案是在EditText的onCheckIsTextEditor中运行hide方法,因为它似乎在onFocusChanged之后运行,并且大约每秒钟调用一次。但这是一个丑陋的hack,因为键盘仍然会显示一瞬间并使我的布局来回移动。我的当前测试设备包括带有4.1.2的Motorola Photon Q 4G LTE和带有4.0.3的Honeywell Dolphin 70e Black。