Android 收回软键盘

在 iOS 里,如果要收回软键盘,只需要调用当前持有焦点的 TextField 的 resignFirstResponder 方法即可。所以很自然的,在 Android 里,就会想到调用 EditText 的 clearFocus() 方法。但发现这样并没有让键盘收回,这与 iOS 不同。

在 Android 中,应借助 InputMethodManager 可隐藏键盘,方法如下:

1
2
3
4
5
6
7
private void hideKeyboard() {
View viewFocus = this.getCurrentFocus();
if (viewFocus != null) {
InputMethodManager imManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imManager.hideSoftInputFromWindow(viewFocus.getWindowToken(), 0);
}
}

要注意,就像刚才所说,虽然有 viewFocus.clearFocus() 这个方法,但调用它是无法让软键盘收回的。

另外,用上面这个方法能够收回键盘,但输入框依然持有着焦点。也就是说,焦点与软键盘是否显示,并无关系。