以编程方式设置 android:animateLayoutChanges

Posted

技术标签:

【中文标题】以编程方式设置 android:animateLayoutChanges【英文标题】:Setting android:animateLayoutChanges programmatically 【发布时间】:2014-07-26 02:47:43 【问题描述】:

我正在以编程方式创建线性布局,并希望它们在可见性设置为可见/消失时淡入和淡出。

我可以设置

android:animateLayoutChanges="true" 

在 xml 文件中,但由于我是以编程方式创建视图,因此我需要以编程方式设置它。我该怎么做?

【问题讨论】:

【参考方案1】:

使用此代码:

container.setLayoutTransition(new LayoutTransition());

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

【讨论】:

感谢您的评论,但遗憾的是 disableTransitionType 仅适用于 API 级别 16,但我使用的是 API 级别 15。 可选,可以直接使用container.setLayoutTransition(new LayoutTransition()) 好的,但是如果我想禁用淡出效果,API级别15有办法吗? 为什么要禁用消失的过渡? 要在 api 级别小于 16 的情况下执行此操作,只需禁用此过渡类型的 Animator。文档中提到了这一点: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);【参考方案2】:

要禁用淡出效果试试这个:

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

【讨论】:

这给了我 NullPointerException。 @SrujanBarai 那么您的布局中没有 ID 为 R.id. test_layout 的视图。

以上是关于以编程方式设置 android:animateLayoutChanges的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式打开 Android 设置

如何以编程方式设置 UITableView 的高度

为啥我们不能在以编程方式设置初始视图控制器时以编程方式在视图控制器之间跳转?

以编程方式设置 UITabBar 标题

无法以编程方式将样式设置为 LinearLayout

如何以编程方式设置scrollview高度