2010-10-13 37 views
6

我有一個標籤頁視圖,每個標籤有一個Activity,當我從具有TextView的第一個標籤切換到僅顯示可點擊列表的第二個標籤時,軟鍵盤還在那裏。我希望它去了,所以我嘗試這樣做:在沒有任何鍵盤操作的情況下隱藏活動的軟鍵盤

public static void hideSoftKeyboard (Activity activity, View view) { 
    InputMethodManager imm = (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE); 
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0); 
} 

但這不起作用,因爲沒有相關的視圖提供,因爲是採用鍵盤輸入屏幕上沒有查看。有關如何解決這個問題的任何建議?

回答

16

代碼中的第三條線試試這個:

imm.hideSoftInputFromWindow(view.getApplicationWindowToken(), 0);

16

嘗試由喬所提供的答案:爲您的活動Stop EditText from gaining focus at Activity startup

將這個清單裏面: android:windowSoftInputMode="stateHidden"

這是一個常見的問題,很高興知道框架實際上處理得非常好。

+3

: - /我有這個,但它沒有幫助。當我使用任務切換器從使用鍵盤的活動切換到我的活動(沒有文本輸入並且因此不需要鍵盤)時,鍵盤保持不動。 – ArtOfWarfare 2013-01-07 04:16:48

+1

如果您處於一項活動中,這也不起作用,請點擊編輯文本以顯示鍵盤,然後點擊操作欄標題的後退按鈕。即使它具有windowSoftInputMode設置,回到上一個活動也不會隱藏鍵盤。 – 2014-04-02 20:48:53

4

您也可以嘗試

imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);

4
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); 
0

這種方法可以幫助你隱藏鍵盤的任何方式。這工作對我來說很好

public void hideKeyboard(Activity activity, View view) { 
     if (activity != null) { 

      if(view != null) 
      { 
       try { 
        InputMethodManager imm = (InputMethodManager)this.getSystemService(Service.INPUT_METHOD_SERVICE); 
        imm.hideSoftInputFromWindow(view.getWindowToken(), 0); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      }else 
      { 
       activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
      } 

     } 
    } 
+0

在webview中隱藏軟鍵也很有用嗎? – Criss 2016-07-16 05:55:40