Android einstellen: animateLayoutChanges programmgesteuert

80

Ich erstelle programmgesteuert lineare Layouts und möchte, dass sie ein- und ausgeblendet werden, wenn die Sichtbarkeit auf sichtbar / verschwunden eingestellt ist.

Ich kann einstellen

android:animateLayoutChanges="true" 

in der XML-Datei, aber da ich die Ansichten programmgesteuert erstelle, muss ich sie programmgesteuert festlegen. Wie kann ich das machen?

deimos1988
quelle

Antworten:

145

Verwenden Sie diesen Code:

container.setLayoutTransition(new LayoutTransition());

oder

LayoutTransition lt = new LayoutTransition();
lt.disableTransitionType(LayoutTransition.DISAPPEARING);
container.setLayoutTransition(lt);
user3709904
quelle
1
Vielen Dank für Ihren Kommentar, aber leider ist disableTransitionType nur ab API-Level 16 verfügbar, ich verwende jedoch API-Level 15.
deimos1988
2
Es ist optional, Sie können einfach verwendencontainer.setLayoutTransition(new LayoutTransition())
user3709904
2
Okay, aber wenn ich den Ausblendeffekt deaktivieren wollte, gibt es eine Möglichkeit für API Level 15?
Deimos1988
3
Warum den verschwindenden Übergang deaktivieren?
Louis CAD
2
Um dies in einer API-Stufe von weniger als 16 zu tun, deaktivieren Sie einfach Animatoren für diese Übergangstypen. Dies wird in der Dokumentation erwähnt: developer.android.com/intl/ru/reference/android/animation/… LayoutTransition lt = cardGroup.getLayoutTransition (); // Deaktivieren von erscheinenden / verschwindenden Layoutübergängen lt.setAnimator (LayoutTransition.APPEARING, null); lt.setAnimator (LayoutTransition.DISAPPEARING, null); lt.setAnimator (LayoutTransition.CHANGE_DISAPPEARING, null);
Himmel
17

Versuchen Sie Folgendes, um den Ausblendeffekt zu deaktivieren:

LinearLayout layout = (LinearLayout) findViewById(R.id.test_layout);
layout.setLayoutTransition(null);
Bob
quelle
2
Dies gibt mir NullPointerException.
Srujan Barai
7
@SrujanBarai Dann gibt es keine Ansicht mit der ID R.id. test_layoutin Ihrem Layout.
Paul Woitaschek