以编程方式切换隐藏软键盘

时间:2017-11-07 13:51:53

标签: java android mobile

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

但没有成功。

关于如何解决这个问题的任何建议或想法?

1 个答案:

答案 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将重点关注它。