プログラムでandroid:animateLayoutChangesを設定する


84

私はlinearLayoutsをプログラムで作成しており、可視性がvisible / goneに設定されたときにフェードインおよびフェードアウトしたいと思っています。

設定できます

android:animateLayoutChanges="true" 

xmlファイルにありますが、プログラムでビューを作成しているので、プログラムで設定する必要があります。どうやってやるの?

回答:


151

このコードを使用します:

container.setLayoutTransition(new LayoutTransition());

または

LayoutTransition lt = new LayoutTransition();
lt.disableTransitionType(LayoutTransition.DISAPPEARING);
container.setLayoutTransition(lt);

1
しかし、私はAPIレベル15を使用しています、コメントありがとうございましたが、残念ながらdisableTransitionTypeはAPIレベル16からのみ利用可能です
deimos1988

2
これはオプションで、簡単に使用できますcontainer.setLayoutTransition(new LayoutTransition())
user3709904 2014年

2
わかりましたが、フェードアウト効果を無効にしたい場合、APIレベル15の方法はありますか?
deimos1988 2014

3
消える遷移を無効にするのはなぜですか?
Louis CAD

2
16未満のAPIレベルでこれを行うには、この遷移タイプのアニメーターを無効にするだけです。これはドキュメントに記載されています: developer.android.com/intl/ru/reference/android/animation/…LayoutTransitionlt= cardsGroup.getLayoutTransition(); //レイアウト遷移の表示/非表示を無効にするlt.setAnimator(LayoutTransition.APPEARING、null); lt.setAnimator(LayoutTransition.DISAPPEARING、null); lt.setAnimator(LayoutTransition.CHANGE_DISAPPEARING、null);

18

フェードアウト効果を無効にするには、次のことを試してください。

LinearLayout layout = (LinearLayout) findViewById(R.id.test_layout);
layout.setLayoutTransition(null);

2
これは私にNullPointerExceptionを与えています。
Srujan Barai 2016

7
@SrujanBarai次にR.id. test_layout、レイアウトにIDを持つビューはありません。
Paul Woitaschek 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.