我们有一个在条形码扫描仪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/

10-10 18:27
查看更多