2014-05-01 68 views
0

即使我的SearchView不在焦點(即用戶已經按下「搜索」按鈕提交他們的查詢),當我按下取消(X)按鈕在我的Android SearchView上,軟鍵盤會回到視圖中。取消SearchView會導致軟鍵盤出現

我的想法是,如果用戶還沒有在屏幕上的鍵盤,那麼他們只是想清除過濾器/搜索框。如果他們想清除過濾器並輸入不同的東西,他們可以再次點擊它。

但是,如果他們正在輸入框並犯了一個錯誤,我希望鍵盤保持在視圖中(因爲搜索視圖已經有焦點)。

所以,總之我想:

  1. 如果用戶在搜索視圖輸入和水龍頭取消/清除,然後將鍵盤保持在焦點。
  2. 如果用戶當前沒有在搜索視圖中輸入內容(即鍵盤已從視圖中消失),則點擊清除按鈕應該清除查詢並且不要將鍵盤放回到視圖中。

我知道我可以使用setOnCloseListener()事件掛鉤時,按下清除/關閉按鈕進入,但我不知道如何從顯示在點#2中提及的軟鍵盤停止它。

編輯:

也許有辦法,我可以有搜索視圖「失去焦點」? 我該如何達到這個結果?謝謝。

回答

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

謝謝!這真的有幫助! – b85411

相關問題