Ustawianie android: animateLayoutChanges programowo


84

Tworzę linearLayouts programowo i chciałbym, aby pojawiały się i znikały, gdy widoczność jest ustawiona na widoczna / zniknęła.

Mogę ustawić

android:animateLayoutChanges="true" 

w pliku xml, ale ponieważ tworzę widoki programowo, muszę ustawić to programowo. Jak mogę to zrobić?

Odpowiedzi:


151

Użyj tego kodu:

container.setLayoutTransition(new LayoutTransition());

lub

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

1
Dziękuję za komentarz, ale niestety disableTransitionType jest dostępne tylko od poziomu API 16, jednak używam poziomu API 15.
deimos1988

2
Jest to opcjonalne, możesz użyć po prostucontainer.setLayoutTransition(new LayoutTransition())
user3709904

2
Dobrze, ale jeśli chciałbym wyłączyć efekt zanikania, czy jest sposób na 15 poziom API?
deimos1988

3
Po co wyłączać znikające przejście?
Louis CAD

2
Aby to zrobić na poziomie API niższym niż 16, po prostu wyłącz Animatory dla tego typu przejść. Wspomina o tym dokumentacja: developer.android.com/intl/ru/reference/android/animation/… LayoutTransition lt = cardsGroup.getLayoutTransition (); // wyłączanie pojawiających się / znikających przejść układu lt.setAnimator (LayoutTransition.APPEARING, null); lt.setAnimator (LayoutTransition.DISAPPEARING, null); lt.setAnimator (LayoutTransition.CHANGE_DISAPPEARING, null);
niebo

18

Aby wyłączyć efekt zanikania, spróbuj tego:

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

2
To daje mi NullPointerException.
Srujan Barai

7
@SrujanBarai Wtedy nie ma widoku z identyfikatorem R.id. test_layoutw twoim układzie.
Paul Woitaschek
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.