在SearchView上取消导致软键盘出现

时间:2014-05-01 07:48:37

标签: android searchview

即使我的SearchView没有聚焦(即用户之前已按下“搜索”按钮提交查询),当我按下Android SearchView上的取消(X)按钮时,软键盘会出现回到视野中。

我的想法是,如果用户还没有屏幕上的键盘,那么他们只想清除过滤器/搜索框。如果他们想要清除过滤器并键入不同的内容,他们可以再次点击它。

但是,如果他们在框中输入并出错,我希望键盘保持在视图中(因为搜索视图已经有焦点)。

简而言之,我想要:

  1. 如果用户在搜索视图中输入并点按取消/清除,则键盘会保持清晰。
  2. 如果用户当前没有在搜索视图中输入(即键盘已从视图中消失),则点击清除按钮应该只清除查询,而不是让键盘重新进入视图。
  3. 我知道我可以在按下清除/关闭按钮时使用setOnCloseListener()事件挂钩,但我不知道如何阻止它显示第2点中提到的软键盘。< / p>

    修改

    也许有一种方法可以让搜索视图“失去焦点”? 我如何实现这一结果?感谢。

1 个答案:

答案 0 :(得分:3)

您可以通过执行以下操作来失去焦点:

searchView.clearFocus();

您还可以使用inputManager强制将键盘隐藏在所需的任何事件上。

例如:

InputMethodManager inputManager = (InputMethodManager) this
            .getSystemService(Context.INPUT_METHOD_SERVICE);

    //check if no view has focus:
    View v=this.getCurrentFocus();
    if(v==null)
        return;

    inputManager.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);