我正在顯示textinput的對話框,並且想要在沒有硬鍵盤打開的情況下自動顯示軟鍵盤。爲了讓它顯示在我的Samsung Galaxy Tab上,我必須使用SHOW_FORCED標誌,SHOW_IMPLICIT標誌不起作用。另外,在對話解除時,如果我強制顯示,我想關閉鍵盤。但是,我在下面使用的代碼並未關閉Galaxy Tab上的鍵盤;我認爲這是因爲我使用Explicit標誌來顯示。Android:如何關閉明確顯示的軟鍵盤?
/* from the dialog constructor*/
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.restartInput(mEditText);
//only display if there is no hard keyboard out
Configuration config = getResources().getConfiguration();
if (config.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES)
{
mForcedKeyboardDisplay = true;
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
}
/* from the onDismiss() method*/
//if we previously forced keyboard display, force it to close
if (mForcedKeyboardDisplay)
{
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.restartInput(mEditText);
imm.hideSoftInputFromWindow(mEditText.getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);
//this doesn't work either
//imm.hideSoftInputFromWindow(mEditText.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
//nor does this
//imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);
}
我在華碩Transformer Pad上有類似的問題。我通過對hideSoftInputFromWindow使用連續的2個postDelayed調用(100ms和400ms)來解決此問題。 – 2012-06-29 15:19:06