我们有一个在条码扫描器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
但没有成功。
关于如何解决这个问题的任何建议或想法?
答案 0 :(得分:2)
另一种方法是如何获得焦点视图,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将重点关注它。