Android アプリ (フルスクリーン、ランドスケープ) があり、2 つのビューがあります。1 つはFrameLayout常に表示される で、もう 1 つはLinearLayoutです。の可視性LinearLayoutをView.GONEすぐに設定しました。ユーザーが のボタンをタップすると、 のFrameLayout可視性を に設定LinearLayoutしview.VISIBLE、 を使用しInputMethodManagerて の にソフト入力を表示しEditTextますLinearLayout。これにより、EditText が画面上のキーボードのすぐ上に表示されるように、両方のビューが上に移動します。これで問題ありません。
ソフト入力を閉じると問題が発生します。同じコールバックで、LinearLayout( を使用してEditText)の可視性を に設定しましView.GONEた。私が見ているのは、FrameLayout が画面の上で動かなくなっていることです (下に移動しません)。を GONE 化しないとLinearLayout、両方のビューが正常に下に移動します。
可視性を に設定する前に待機するタイマーを開始することで問題を回避できますGONEが、そうする必要はありません。をいつ非表示にできるかを示す、一貫して受信できる通知があるはずLinearLayoutです。
私が試しhideSoftInputFromWindowたこと: (結果受信者のコールバックはすぐに呼び出されます (つまり、キーボードが実際に消える前)、ビューがあまりにも早く消えてしまう、同じ問題)、 (ソフト入力時に呼び出されないResultReceiver) の onLayout をオーバーライドしますLinearLayoutビューを上下に移動します)、他のView「オン」をオーバーライドします。
もう1つの本当に厄介なことは、この問題が私の電話に限定されているように見えることです.AT&T Samsung Galaxy SII SkyrocketでAndroid 4.0.4を実行しています(おそらくSamsungの変更が加えられています)。私は 4.0.3 シミュレーターで再現できません。また、他の Android バージョンの他のデバイスで再現することもできません。
何か案は?