隱藏 SoftKeyboard
隱藏 Softkeyboard 是使用 EditText 時的基本要求。預設情況下,軟鍵盤只能通過按後退按鈕關閉,因此大多數開發人員使用 InputMethodManager 強制 Android 隱藏呼叫 hideSoftInputFromWindow 的虛擬鍵盤並傳入包含焦點檢視的視窗的標記。執行以下操作的程式碼:
public void hideSoftKeyboard()
{
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
}
程式碼是直接的,但是出現的另一個主要問題是當某些事件發生時需要呼叫 hide 函式。按下 EditText 以外的任何地方時需要隱藏軟鍵盤時該怎麼辦?下面的程式碼給出了一個簡潔的函式,需要在 onCreate()
方法中呼叫一次。
public void setupUI(View view)
{
String s = "inside";
//Set up touch listener for non-text box views to hide keyboard.
if (!(view instanceof EditText)) {
view.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
hideSoftKeyboard();
return false;
}
});
}
//If a layout container, iterate over children and seed recursion.
if (view instanceof ViewGroup) {
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
View innerView = ((ViewGroup) view).getChildAt(i);
setupUI(innerView);
}
}
}