我们有一个在条形码扫描仪android设备(ScanSKU)上运行的应用程序。每当用户扫描任何内容时,键盘都会在“键入”他们扫描的文本时出现,并会阻塞屏幕的一半。
我们的应用程序基本上是WebView,我们仍然需要能够将表单元素集中在其中。
但是,无论如何,我们是否可以构建一个切换开关来禁止屏幕键盘在WebView中时出现?
我试过使用这个:
// Check if no view has focus:
View view = this.getCurrentFocus();
if (view != null) {
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
来自:Close/hide the Android Soft Keyboard
但是没有成功。
关于如何解决这个问题有任何建议或想法吗?
最佳答案
还有另一种获取焦点视图的方法,getCurrentFocus方法对我也不起作用。尝试此解决方案,您应该提供Activity对象的实例。
public static void hideSoftKeyboard(Context context) {
try {
InputMethodManager inputMethodManager = (InputMethodManager) context.getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(((Activity) context).getWindow().getDecorView().getRootView().getWindowToken(), 0);
((Activity) context).getWindow().getDecorView().getRootView().clearFocus();
} catch (NullPointerException e) {
// some error log
}
}
编辑:如果您使用WebView并且仍然需要能够在其中聚焦表单元素。您可以设置属性
view.setFocusableInTouchMode(false);
屏幕上的另一个视图,WebView将在其上保持焦点。
关于java - 以编程方式切换隐藏软键盘,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47159663/