検索したときにソフトウェアキーボードをひっこめたい
+---------------------------+ | [検索キーワード ] [検索] | +---------------------------+ | 検索結果1 | | 検索結果2 | | : | +---------------------------+
横画面で上記のようなレイアウトの場合、検索結果の上にソフトウェアキーボードが被さってしまい、検索結果がみにくくなるので、検索を実行した後はキーボードを閉じて画面上から消したい。
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
ユーザからテキスト入力を受け付けるときに使う EditText は属性に android:imeOptions="actionSearch" を設定しておくと、ソフトウェアキーボードの「確定」ボタンに虫眼鏡アイコンが表示されるらしい。
あと、Enterキーで検索できるように実装するには、EditText#setOnEditorActionListener を使えばいいのかな。
myEditText.setOnEditorActionListener(new OnEditorActionListener() { public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (event == null || event.getAction() == KeyEvent.ACTION_UP) { doSearch(); } return true; } });
ソフトウェアキーボードの場合 event パラメータが null っぽい。ハードウェアキーボードの場合は ACTION_DOWN と ACTION_UP で2回来てしまうので ACTION_UP だけをハンドルすればよさげ...。(間違ってるかも)