Встановлення android: animateLayoutChanges програмно


84

Я створюю linearLayouts програмно і хотів би, щоб вони зникали і згасали, коли видимість встановлена ​​на видимий / зниклий.

Я можу встановити

android:animateLayoutChanges="true" 

у xml-файлі, але оскільки я створюю подання програмно, мені потрібно встановити його програмно. Як я можу це зробити?

Відповіді:


151

Використовуйте цей код:

container.setLayoutTransition(new LayoutTransition());

або

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

1
Дякуємо за ваш коментар, але, на жаль, disableTransitionType доступний лише з рівня API 16, однак я використовую рівень API 15.
deimos1988,

2
Це необов’язково, ви можете використовувати простоcontainer.setLayoutTransition(new LayoutTransition())
user3709904

2
Гаразд, але якщо я хотів відключити ефект згасання, чи є спосіб для рівня API 15?
deimos1988

3
Чому вимкнути зникаючий перехід?
Louis CAD

2
Щоб зробити це на рівні api менше 16, просто вимкніть Animators для цього типу переходів. Про це йдеться у документації: developer.android.com/intl/ru/reference/android/animation/… LayoutTransition lt = 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

7
@SrujanBarai Тоді R.id. test_layoutу вашому макеті немає подання з ідентифікатором .
Paul Woitaschek,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.