隐藏 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);
}
}
}