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?

Antworten:


145

Verwenden Sie diesen Code:

container.setLayoutTransition(new LayoutTransition());

oder

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

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);

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.