フォーカスがあるときにソフトキーボードを自動的に表示したいのですがEditText
(デバイスに物理キーボードがない場合)、次の 2 つの問題があります。
Activity
my が表示されている場合、myEditText
にフォーカスがありますが、キーボードは表示されません。キーボードを表示するには、もう一度クリックする必要があります (my がActivity
表示されている場合は表示されるはずです)。そして、キーボードで完了をクリックすると、キーボードは閉じられますが、フォーカス
EditText
は維持され、必要ありません (編集が完了したため)。
話を戻すと、私の問題は iPhone のようなものを用意することです。つまり、キーボードを自分のEditText
状態 (フォーカスされている / フォーカスされていない) と同期させ、もちろん物理的なキーボードがある場合はソフト キーボードを表示しないようにすることです。
ベストアンサー1
ソフトキーボードを強制的に表示するには、
EditText yourEditText= (EditText) findViewById(R.id.yourEditText);
yourEditText.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT);
そして、 のフォーカスを削除するにはEditText
、残念ながら、フォーカスを取得するためのダミーが必要ですView
。
閉じるには
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(yourEditText.getWindowToken(), 0);
これはダイアログで使用する場合に有効です
public void showKeyboard(){
InputMethodManager inputMethodManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
}
public void closeKeyboard(){
InputMethodManager inputMethodManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
}