編集テキストにフォーカスがあるときにソフトキーボードを表示する方法 質問する

編集テキストにフォーカスがあるときにソフトキーボードを表示する方法 質問する

フォーカスがあるときにソフトキーボードを自動的に表示したいのですがEditText(デバイスに物理キーボードがない場合)、次の 2 つの問題があります。

  1. Activitymy が表示されている場合、myEditTextにフォーカスがありますが、キーボードは表示されません。キーボードを表示するには、もう一度クリックする必要があります (my がActivity表示されている場合は表示されるはずです)。

  2. そして、キーボードで完了をクリックすると、キーボードは閉じられますが、フォーカス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);
}

おすすめ記事