2

我有一个自定义对话框,它必须从屏幕底部向上滑动,然后在关闭时再次向下滑动。(类似于软键盘的工作方式)。自定义对话框包含一些要填写的文本字段。

我已经使用 windowEnter 和 windowExit 动画指定了我的自定义对话框样式。首次创建对话框时,它会正确上下滑动。当您关闭它时,它会像应有的那样滑回原处。但是在您填写其中一个字段并关闭键盘后,关闭动画就搞砸了。它向上滑动并消失,而不是像应有的那样向下滑动。所以不知何故,打开和关闭键盘的行为会导致 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 回答