自分用メモも兼ねて作成してみる。
表題のような場面やActivity起動時などに特定のEditTextにフォーカスをあてて
ソフトキーボードを出したいと思った時、
上記のようなコードだけではEditTextにフォーカスはあたるものの、ソフトキーボードが表示されない。
なぜかと思ったら画面の描画が終わった後にフォーカスをあてないとダメらしい。
いろいろ調べてコードをこねくり回した結果、以下のようなコードに落ち着いた。
要は画面が描画されてから処理を行えば良いということ。
android.os.Handler.postDelayed()を使用してソフトキーボードの表示処理を遅延させれば良い。
java.util.Timerでの遅延でいいじゃないかと思われるかもしれないけど
こっちのほうが効率が良いっぽい。(理由はよくわかりません。ゴメンナサイ。)
とりあえず10ミリ秒の遅延にしているけどハードウェアの性能によっては
もっと少なくて済んだり足りなかったりするかもしれない。
ちょっと美しくない解法かも知れないが目的は達成できるのでまあいいかな…?
0 件のコメント:
コメントを投稿