EditTextでソフトキーボードをオフにする | hide Soft Keyboard | Android

スポンサーリンク

以前の記事でフォーカスを初期状態で当てない方法をご紹介しました。

今回は、EditTextに記入をした後、ソフトキーボードを非表示にする方法です。

Backキーをタップすれば隠すこともできますが、あまりこれは良い方法ではありません。

以下のようにコードを記述します。

public class MainActivity extends AppCompatActivity {
    private EditText editText;
    private View view;
    private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = (EditText)findViewById(R.id.editText);
        button = (Button)findViewById(R.id.button);
        view = this.getCurrentFocus();  // 1
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (view != null) {
                    editText.clearFocus();
                    InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
                    inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
                }
            }
        });
    }
}

1でフォーカスされているビューを取得します。

buttonをタップした際に、フォーカスされているビュー(この場合はEditTextになります)がnullではない場合に、ソフトキーボードを隠すという処理です。

これで目的通りになったかと思います。

もちろんViewを定義せずにif(editText != null)としても目的は達成できますが、この場合はEditViewが1つだけのときのみです。ですから今回は全てのスーパークラスであるViewを用いて記述しています。