2010-05-09 165 views
8

我正在開發Droid Incredible(並且已經在1.5 AVD Emulator上進行了測試),並且我的選項卡窗口小部件中的其中一個選項卡由一個listview和一個帶有EditText和一行的EditText組成發送按鈕(用於聊天功能)。一旦我點擊發送,我正在使用以下關閉軟鍵盤,但它不起作用。這與我在其他地方發現的代碼相同,即人們已將其視爲正確。隱藏軟鍵盤不工作

看到我失蹤的任何東西?

// in Button's onClick(): 
EditText chatTextBox = (EditText) findViewById(R.id.chat_entry); 
// Handle button click ... 
chatTextBox.setText(""); 

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(chatTextBox.getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY); 

我也嘗試將標誌更改爲0.沒有運氣。任何人都知道發生了什麼?

****編輯****剛剛意識到我最初使用hideSoftInputFromInputMethod()而不是hideSoftInputFromWindow()。改變它並沒有讓它工作,雖然...

回答

20

改變HIDE_IMPLICIT_ONLY爲0做到了(在我從hideSoftInputFromInputMethod()改爲hideSoftInputFromWindow()後)。

但是我不確定爲什麼HIDE_IMPLICIT_ONLY不工作,因爲我沒有明確地在菜單上長按鍵盤。

+0

如果SHOW_FORCED'then它表明用戶已經迫使輸入法打開(如長按菜單),因此它不應該被關閉,直到他們明確地這樣做,你就會顯示鍵盤標誌'。 [見文檔](http://developer.android.com/reference/android/view/inputmethod/InputMethodManager.html#SHOW_FORCED) – 2015-01-09 08:06:57

+0

如果你有** Forced **顯示的鍵盤並且想隱藏然後使用下面的代碼'InputMethodManager imm =(InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE); \t \t imm.hideSoftInputFromWindow(mEditText.getWindowToken(),0);' – 2015-01-09 08:08:38

11

另一種選擇,以防止它活動AndroidManifest.xml文件

機器人:windowSoftInputMode =「stateAlwaysHidden」 - 該方法可以防止裝載/表示鍵盤被加載的活性時。但是當你點擊edittext等可編輯組件時,鍵盤將會打開。 適合我的要求。

<activity 
      android:name=".Name" 
      android:label="@string/app_name" 
      android:windowSoftInputMode="stateAlwaysHidden"> 
+0

這是工作時,鍵盤永遠不會死於某種方式。好的。 – beginners 2013-07-22 01:46:22

5

1.首先您編輯短信令牌綁定鍵盤和開放
inputMethodManager.showSoftInput(_edittext, 0); //這裏_edittext是視圖實例

2.keyboard會如果編輯文本都會自動隱藏從屏幕上隱藏

3.編輯文本仍然在屏幕上,但你想隱藏鍵盤,然後使用下面的代碼 imm.hideSoftInputFromWindow(_edittext.getWindowToken(), 0); // t如果edittext不在屏幕上或沒有關注,他將無法工作。

+1

這是有史以來最好的答案!解釋所有鍵盤隱藏背後的奧祕 – ulusoyca 2017-01-05 13:45:43