以编程方式设置android:animateLayoutChanges


80

我正在以编程方式创建linearLayouts,希望当可见性设置为visible / gone时淡入和淡出。

我可以设定

android:animateLayoutChanges="true" 

在xml文件中,但是由于我以编程方式创建视图,因此需要以编程方式进行设置。我怎样才能做到这一点?

Answers:


146

使用此代码:

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 2014年

2
好的,但是如果我想禁用淡出效果,是否可以使用API​​级别15?
deimos1988

3
为什么要禁用消失的过渡?
路易CAD

2
要在小于16的api级别上执行此操作,只需为此过渡类型禁用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);
天空

17

要禁用淡出效果,请尝试以下操作:

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

2
这给了我NullPointerException。
Srujan Barai

7
@SrujanBarai然后R.id. test_layout,您的布局中没有ID的视图。
Paul Woitaschek '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.