2

画面の下部から上にスライドし、閉じると再び下にスライドする必要があるカスタム ダイアログがあります。(ソフト キーボードの動作に似ています)。カスタム ダイアログには、入力するテキスト フィールドがいくつか含まれています。

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"

私が言ったように、最初にダイアログを表示したときは正常に機能しますが、キーボードを使用した後にのみ、終了アニメーションが変更されます。

ありがとう!

4

1 に答える 1

0

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%"
    android:toYDelta="100%" />
于 2014-01-02T06:41:16.477 に答える