1. ホーム
  2. アンドロイド

[解決済み】編集テキストにフォーカスが当たっている時にソフトキーボードを表示させる方法

2022-04-16 15:57:32

質問

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

  1. 私の Activity が表示されると、私の EditText がフォーカスされているのにキーボードが表示されていないので、もう一度クリックしてキーボードを表示させる必要があります。 Activity が表示されます)。

  2. また、キーボードでdoneをクリックすると、キーボードは解除されますが EditText はフォーカスされたままであり、yは(私の編集が完了したため)望んでいません。

私の問題は、iPhoneのようにキーボードと同期しているものを持つことです。 EditText の状態(フォーカス/非フォーカス)、そしてもちろん、物理的なキーボードがある場合は、ソフトキーボードを表示しません。

どのように解決するのですか?

ソフトキーボードを強制的に表示させるには

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);
}