当 EditText 获得焦点时显示键盘,失去焦点时隐藏键盘
Show keyboard when an EditText gains focus and hide keyboard when it loses focus
问题不言自明。
编辑文本获得焦点时显示软键盘,失去焦点时隐藏键盘。这是我使用过的代码。
this.newTaskTitle = (EditText) taskCreationView.findViewById(R.id.newTaskTitle);
this.newTaskTitle.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
//Set up input manager
InputMethodManager keyboardManager = (InputMethodManager) getSystemService(
Context.INPUT_METHOD_SERVICE
);
if(hasFocus) {
Log.i(TAG,"hasFocus");
//Display keyboard
keyboardManager.showSoftInput(
v,
InputMethodManager.SHOW_IMPLICIT
);
} else {
Log.i(TAG,"lostFocus");
//Hide keyboard
keyboardManager.hideSoftInputFromInputMethod(
v.getWindowToken(),
0
);
}
}
});
即使 else 在 EditText 失去焦点时执行,键盘也永远不会隐藏。为什么会这样?
这不是隐藏键盘的正确方法吗?
我觉得,没有必要设置OnFocusChangeListener。从你的按钮的 onClick 调用下面的方法,在调用这个方法后设置你的 EditText.On 获得焦点软键盘的可见性 GONE 自动打开。
private void hideKeyBoard(Context context, EditText editText) {
InputMethodManager imm = (InputMethodManager) context
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
}
问题不言自明。
编辑文本获得焦点时显示软键盘,失去焦点时隐藏键盘。这是我使用过的代码。
this.newTaskTitle = (EditText) taskCreationView.findViewById(R.id.newTaskTitle);
this.newTaskTitle.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
//Set up input manager
InputMethodManager keyboardManager = (InputMethodManager) getSystemService(
Context.INPUT_METHOD_SERVICE
);
if(hasFocus) {
Log.i(TAG,"hasFocus");
//Display keyboard
keyboardManager.showSoftInput(
v,
InputMethodManager.SHOW_IMPLICIT
);
} else {
Log.i(TAG,"lostFocus");
//Hide keyboard
keyboardManager.hideSoftInputFromInputMethod(
v.getWindowToken(),
0
);
}
}
});
即使 else 在 EditText 失去焦点时执行,键盘也永远不会隐藏。为什么会这样?
这不是隐藏键盘的正确方法吗?
我觉得,没有必要设置OnFocusChangeListener。从你的按钮的 onClick 调用下面的方法,在调用这个方法后设置你的 EditText.On 获得焦点软键盘的可见性 GONE 自动打开。
private void hideKeyBoard(Context context, EditText editText) {
InputMethodManager imm = (InputMethodManager) context
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
}