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

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

我可以设置

android:animateLayoutChanges="true" 

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

【问题讨论】:

    标签: android animation dynamic


    【解决方案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 的视图。
    猜你喜欢
    • 2021-11-21
    • 2018-11-26
    • 2011-04-18
    • 2012-07-18
    • 2016-02-15
    • 1970-01-01
    • 2011-06-06
    • 2012-02-12
    • 1970-01-01
    相关资源
    最近更新 更多