以编程方式设置 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的主要内容,如果未能解决你的问题,请参考以下文章