画面の下部から上にスライドし、閉じると再び下にスライドする必要があるカスタム ダイアログがあります。(ソフト キーボードの動作に似ています)。カスタム ダイアログには、入力するテキスト フィールドがいくつか含まれています。
windowEnter アニメーションと windowExit アニメーションを使用してカスタム ダイアログ スタイルを指定しました。ダイアログが最初に作成されたとき、正しく上下にスライドします。あなたがそれを閉じると、本来のようにスライドして戻ります。しかし、フィールドの 1 つに入力してキーボードを閉じると、閉じるアニメーションが台無しになります。本来のように下にスライドするのではなく、上にスライドして消えます。そのため、どういうわけか、キーボードを開いたり閉じたりすると、windowExitAnimation が台無しになります。
これが私のコードです:
slide_up.xml (アニメーションに入る):
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="100%p" android:toYDelta="0%p"
android:duration="@android:integer/config_longAnimTime"/>
slide_down.xml (終了アニメーション):
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_longAnimTime"
android:fromYDelta="0%p"
android:toYDelta="100%p" />
スタイル.xml:
<style name="DialogAnimation">
<item name="android:windowEnterAnimation">@anim/slide_up</item>
<item name="android:windowExitAnimation">@anim/slide_down</item>
</style>
<style name="DialogSlideTheme" parent="@android:style/Theme.Dialog">
<item name="android:windowAnimationStyle">@style/DialogAnimation</item>
</style>
アクティビティのマニフェストで、ソフト入力モードをadjustNothingに設定しました(キーボードが原因でレイアウトが再計算され、アニメーションがスローされる可能性があると考えたため):
android:windowSoftInputMode="adjustNothing"
私が言ったように、最初にダイアログを表示したときは正常に機能しますが、キーボードを使用した後にのみ、終了アニメーションが変更されます。
ありがとう!