我正在构建android应用程序,其中我在工具栏下面嵌入了一个searchview。见截图。但是,当我点击搜索图标时,我的键盘出现,但当我点击搜索视图的关闭图标时,键盘不会消失。关闭侦听器无法正常工作,并且无法使用操作展开或折叠侦听器,因为它不是menuitem。那么我应该如何消失键盘。请指导。
simpleSearchView.setOnCloseListener(new SearchView.OnCloseListener() {
@Override
public boolean onClose() {
hideKeyboard(getActivity());
return false;
}
});
答案 0 :(得分:4)
您可以通过获取[x]按钮的引用,然后在其上设置onClick侦听器来执行此操作。在onClickListener中,您可以添加逻辑来隐藏键盘。
The code below was obtained from this answer
// Catch event on [x] button inside search view int searchCloseButtonId = searchView.getContext().getResources() .getIdentifier("android:id/search_close_btn", null, null); ImageView closeButton = (ImageView) this.searchView.findViewById(searchCloseButtonId); // Set on click listener closeButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Manage this event. } });
在onClick(View v)
内,您可以调用方法来隐藏键盘
private void hideKeyboard(){
View view = this.getCurrentFocus();
if (view != null) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}