【问题标题】:Cancel on SearchView causing the soft keyboard to appear在 SearchView 上取消导致出现软键盘
【发布时间】:2014-05-01 07:48:37
【问题描述】:

即使我的 SearchView 不在焦点上(即用户之前已经按下“搜索”按钮来提交他们的查询),当我按下 Android SearchView 上的取消(X)按钮时,软键盘就会出现备份到视野中。

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

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

简而言之,我想要:

  1. 如果用户在搜索视图中键入并点击取消/清除,则键盘保持焦点。
  2. 如果用户当前没有在搜索视图中输入(即键盘已从视图中消失),那么点击清除按钮应该只是清除查询而不会使键盘重新出现在视图中。

我知道我可以在按下清除/关闭按钮时使用setOnCloseListener() 事件来挂钩,但我不知道如何阻止它显示第 2 点中提到的软键盘。

编辑:

也许有一种方法可以让搜索视图“失去焦点”? 我怎样才能达到这个结果?谢谢。

【问题讨论】:

    标签: android searchview


    【解决方案1】:

    您可能会通过以下操作失去焦点:

    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);
    

    【讨论】:

    • 谢谢!这真的很有帮助!
    • @Timmetje 我试图在当前焦点位于 SearchView 后强制隐藏键盘。关于如何将您的代码推荐应用到我的用例的任何想法:stackoverflow.com/questions/68355788/…
    猜你喜欢
    • 2019-11-01
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-03
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多