キーボードが閉じられるのを検知したい
以前作ったアプリでは
レイアウトのDisplayサイズとViewサイズの差から
ソフトウェアキーボードの表示有無を取得してたんですが
今回SufaceView上で入力操作をしたくて
Dialog上に配置したコントロールを経由して入力を取ろうとしたとき
先のようなキーボード有無の検知がどうもできなくてどうしたものかと
やれるとしたら入力で配置したEditTextのコントロールくらいだろう、と
いろいろしてみた
◆閉じられる契機
・キーボードの完了おしたとき
・バックキーおしたとき
・キーボード以外の領域をおしたとき(4系のみ)
◆2系と4系のバックキーの挙動の違い
(AlertDialogの上にEditTextのっけてる場合)
4系ではバックキーのイベントがAlertDialogまで飛んでくる
2系では飛んでこない
さて
●こうした
EditText extendしたクラスを用意してonKeyPreImeも書き換えて
そんなかにキーボードが閉じられた時の処理書いた。。。もぉこれでいっかぁ
●あとがき
いいのか、これで
閉じられる契機が心配
BluetoothとかのHWキーボードの場合とか考慮してね
IMEのアプリによって挙動かわらんよな。。。たぶん
<検証結果> ●4系 ・▽のとき(バックキーなのか?) EditText.onKeyPreIme AlertDialog.OnKeyListener:KEYCODE_BACK ・Doneのとき EditText.OnEditorActionListener:IME_ACTION_DONE ・ダイアログ範囲外 かってに閉じる ●2系 ・バックキー EditText.onKeyPreIme ・完了のとき EditText.OnEditorActionListener:IME_ACTION_DONE ・ダイアログ範囲外 反応しない