検索したときにソフトウェアキーボードをひっこめたい

  +---------------------------+
  | [検索キーワード  ] [検索] |
  +---------------------------+
  | 検索結果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 だけをハンドルすればよさげ...。(間違ってるかも)