下面的代码在我将焦点转移到另一个textField时起作用,但是当我只是点击屏幕上的任何地方时(我想触发onFocusChanged事件)。我怎样才能做到这一点?我还需要检查其他文本字段是否没有焦点,因为如果它确实应该保留键盘。
usernameET.setOnFocusChangeListener((new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(v == usernameET) {
Log.d(LoginPage.Tag, "keyboardOnTouch");
if (hasFocus)
{
((InputMethodManager) a.getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(usernameET,
InputMethodManager.SHOW_FORCED);
}
else {
((InputMethodManager) a.getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(
usernameET.getWindowToken(), 0);
}
}
}
}));
答案 0 :(得分:1)
您可以使用onTouchEvent()隐藏软键盘。
@Override
public boolean onTouchEvent(MotionEvent event) {
InputMethodManager imm = (InputMethodManager)getSystemService(Context.
INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
return true;
}
希望这会有所帮助。