即使我的SearchView没有聚焦(即用户之前已按下“搜索”按钮提交查询),当我按下Android SearchView上的取消(X)按钮时,软键盘会出现回到视野中。
我的想法是,如果用户还没有屏幕上的键盘,那么他们只想清除过滤器/搜索框。如果他们想要清除过滤器并键入不同的内容,他们可以再次点击它。
但是,如果他们在框中输入并出错,我希望键盘保持在视图中(因为搜索视图已经有焦点)。
简而言之,我想要:
我知道我可以在按下清除/关闭按钮时使用setOnCloseListener()
事件挂钩,但我不知道如何阻止它显示第2点中提到的软键盘。< / p>
修改
也许有一种方法可以让搜索视图“失去焦点”? 我如何实现这一结果?感谢。
答案 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);