i++

プログラム系のメモ書きなど

Android : SearchView を入れたダイアログで、キーボードを閉じた時にダイアログ自体を閉じる

SearchView#setOnQueryTextFocusChangeListener で hasFocus が false の時に Dialog#dismiss することで実現します。

通常は、1回目の BackKey でキーボードが閉じられるとともに EditText 部分がフォーカスを失い、2回目の BackKey でダイアログが閉じる、となるので 2度 BackKey を押すことになります。
(ダイアログ中の他の要素を操作することができなくなるので、ダイアログの場合にこれをそのまま使うことはなさそう。)

mSearchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus) {

        } else {
            dialog.dismiss();
        }
    }
});