2017-08-02 5 views
1

ソフトキーボードが表示されているときにEditTextが表示されます。この特定のEditTextは、特定のUI要素を前に表示する必要がある場合は、さらに画面下にアニメーション表示することもできます。EditTextをアニメーション化した後で、キーボードがもう表示されなくなりました。

キーボードが表示されているときにEditTextがアニメーション化されていないと、ビュー全体がアニメーション化されて、もはやカバーされなくなります。しかし、EditTextがアニメートされ、キーボードが表示された後でも、アニメーションの前にそれを明らかにする量ではなく、EditTextを開くためにビューが上に移動することはなくなりました。ここで

は私がのEditTextをアニメーション化するために使用していたコードです:

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

答えて

0

あなたの言葉遣いは少し混乱していますので、やってみるつもりだと私の答えが正しいことを確認するためにいくつかのものを明確にします。

私はこれを読んでいますが、あなたはEditTextビューのビューを持っています。また、他のいくつかのUI要素があり、時には画面に追加されることもあります。次に、キーボードが表示されているときに "全体のビューがアニメ化されます"と言います。あなたはviewGroupを意味すると思いますか?のように、他のUI要素とeditTextはすべて親ビューにあり、viewGroupは線形/相対レイアウトなどです。もしそうなら、あなたの問題はかなりシンプルになるかもしれません。

すべてのUI要素とeditTextが親ビュー/ viewGroupの一部であると仮定すると、問題はtranslationY()である可能性があります。私はそれを使って見ることができる2つの問題。最初に、最初のアニメーションで親ビューの外にeditTextを移動すると、画面から切り取ることができます。それは、親ビューに次のコードを追加することで簡単に修正します:

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

他の問題は、あなたが)(translationYを使用して、親ビューに固有の相対位置にEDITTEXTを移動していることが考えられます。 TranslationY(x)はビューを親ビューのxピクセル下方に移動します。したがって、editTextの親ビューを移動してからtranslationY(100f)を使用すると、親ビューを移動していない場合とは別の場所にeditTextが移動します。代わりに、ビューxピクセルをそのCURRENT位置から移動するtranslationYBy(x)を使用することもできます。

要約すると、translationY(100f)はビューをその親の100ピクセル下の位置に移動します。 TranslationYBy(100f)は、どこにあってもビューを100ピクセル下に移動します。レルムの外にビューを移動する場合は、親の場合は、前に述べた2行を追加して、それらが途切れないようにする必要があります。

関連する問題