1

このコードは、Facebookアプリのようなスライドメニューを作成するために見つかりました。彼(このコードを書いた人)は、FrameLayoutを使用して2つのビューを含み、TranslateAnimationを使用してメニューを表示/非表示にしました。彼setFillAfter(true)はかつて視界の位置を保っていた。で、彼はビューが正しい位置にあることを確認するためonAnimationEndに使用しました。view.layout(left, top, right, bottom)

このコードを変更して、Facebookのような3つのビュー(leftView、centerView、rightView(私の場合はLinearLayout))で使用するようにしましたが、問題が見つかりました:アクティビティがshow leftView(およびcenterViewの一部)の場合、EditTextをクリックするとleftViewでソフトキーボードが表示されている場合は、centerViewに戻ります。同様に、ExpandableListViewをクリックすると、チャイルズが表示されます。

誰か助けてくれませんか?これが[私のコード](https://dl.dropbox.com/u/38205395/TestErrorSlidingActivity.rar)です。

よろしくお願いします。英語が下手でごめんなさい!

4

2 に答える 2

0

問題は、キーボードが FrameLayout の測定/レイアウト パスを再トリガーすることです。この時点で、手動で呼び出したレイアウトが FrameLayout の元のレイアウトから置き換えられます。これを回避するには、次の 2 つの方法があります。1) FrameLayout を使用しない (ビューグループの独自の拡張機能を定義するか、FrameLayout を拡張して、子の測定/レイアウトに関するすべてのメソッドをオーバーライドします) 2) アニメーションの後にレイアウトを呼び出さないでください。あなたの子供にsetMarginを使ってみてください(可能であれば)

明らかに、最善の方法は最初の方法です。

于 2013-02-19T14:47:45.887 に答える
0

マニフェストのアクティビティに android:windowSoftInputMode="adjustNothing" を使用してみてください。私のために働いた:)

于 2013-04-19T08:23:56.277 に答える