2017-02-20 121 views
1

我正在构建android应用程序,其中嵌入了searchview下方的工具栏。看截图。但是,当我点击搜索图标我的键盘出现,但是当我点击关闭图标的搜索,键盘不会消失。关闭侦听器不工作,并且操作展开或折叠侦听器无法使用,因为它不是菜单项。那么我应该如何消除键盘。请指导。在布局中关闭searchview的监听器不工作Android

enter image description here

simpleSearchView.setOnCloseListener(new SearchView.OnCloseListener() { 
     @Override 
     public boolean onClose() { 
      hideKeyboard(getActivity()); 
      return false; 
     } 
    }); 
+0

我已经发布,请检查 –

回答

2

您可以通过获取到[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); 
} 
+1

如果使用compat的搜索视图,您可以直接使用 findViewById(R.id.search_close_btn) –