2017-02-20 119 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) –