动画EditText后,键盘不再平移视图

时间:2017-08-02 16:03:25

标签: java android animation keyboard

我有一个EditText,在显示时会被软键盘覆盖。当某些UI元素需要在它之前显示时,这个特定的EditText也可以在屏幕下方进行动画制作。

如果EditText尚未设置动画,则在显示键盘时,整个视图会被动画化,以便不再覆盖它。但是,在对EditText进行动画制作并显示键盘后,视图不再向上移动以显示EditText,甚至不会移动在动画之前用于揭开它的数量。

以下是我用来为EditText设置动画的代码:

findViewById(R.id.myEditText).animate().translationY(100f);

1 个答案:

答案 0 :(得分:0)

你的措辞有点令人困惑,所以我会尝试澄清一些内容,以确保我的答案是正确的。

我读这个,你有一个EditText视图。您还有一些其他UI元素有时会添加到屏幕上,有时不会。然后你提到"整个视图变得动画起来"键盘显示时。我假设你的意思是viewGroup?在其中,其他UI元素以及editText都在一个父视图中,或者视图组像线性/相对布局等。如果是这样,你的问题可能非常简单。

假设所有UI元素以及editText都是父视图/ viewGroup的一部分,那么您的问题可能是translateY()。使用它我可以看到两个问题。首先,如果您的初始动画将editText移动到其父视图之外,则可以将其从屏幕上切除。通过将以下代码添加到其父视图中,这是一个简单的解决方法:

android:clipChildren="false"
android:clipToPadding="false"

另一个问题可能是您通过使用translationY()将editText移动到相对于其父视图的特定位置。 TranslationY(x)将视图x像素移动到其父视图下方。因此,如果您移动了editText的父视图,然后使用translationY(100f),则会将editText带到与您未移动父视图时不同的位置。另一种方法是使用translationYBy(x),它将视图x像素从其CURRENT位置移开。

总之,translationY(100f)将视图移动到其父级下方100像素的位置。 TranslationYBy(100f)无论在何处都将视图向下移动100个像素。如果您将视图移动到领域之外(如果是其父级),则您需要添加我之前提到的那两行,以免它们被切断。