2017-08-02 19 views
1

我有一個EditText,它在顯示時被軟鍵盤覆蓋。當某些UI元素需要在其之前顯示時,這個特殊的EditText也可以在屏幕下方進一步動畫。動畫化EditText後,鍵盤不再平移視圖

如果EditText沒有被動畫,當顯示鍵盤時,整個視圖會變成動畫,以便不再覆蓋它。然而,在EditText被動畫下來並顯示鍵盤之後,視圖不再向上移動以發現EditText,甚至不會在動畫之前用它揭開EditText的數量。

這裏是我使用的動畫的EditText代碼:

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

回答

0

你的措辭有點混亂,所以我要去嘗試,並澄清一些東西,以確保我的答案是正確的。

我正在閱讀這篇文章,因爲您有一個視圖是EditText視圖。您還有一些其他UI元素有時會添加到屏幕上,有時不會。然後,當鍵盤顯示時,你會提到「整個視圖會變成動畫」。我假設你是指viewGroup?如其中,其他UI元素以及editText都在一個父視圖中,或viewGroup像線性/相對佈局或其他。如果是這樣,你的問題可能會非常簡單。

假設所有UI元素以及editText都是父視圖/ viewGroup的一部分,那麼您的問題可能是translationY()。我可以看到使用它的兩個問題。首先,如果您的初始動畫將editText移動到其父視圖之外,則可以將其從屏幕上切除。通過添加如下代碼到它的父視圖是一個簡單的辦法:

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

另一個問題可能是你使用translationY移動EDITTEXT相對於其父視圖中的特定位置()。 TranslationY(x)將視圖x像素移動到其父視圖下方。因此,如果您移動了editText的父視圖,然後使用translationY(100f),那麼editText會將editText移動到與您未移動父視圖的位置不同的位置。另一種方法是使用translationYBy(x)將視圖x像素從CURRENT位置移動。

總之,translationY(100f)將視圖移動到位於其父元素之下100像素的位置。 TranslationYBy(100f)將視圖向下移動100個像素,無論它在哪裏。如果將視圖移到領域之外(如果它的父視圖),則需要添加前面提到的那兩行,以便它們不會被切斷。