以下のコードは、別の 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);
}
}
}
}));