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 バージョンの他のデバイスで再現することもできません。
何か案は?