1

我正在尝试LayoutTransition 上的官方示例
我已经对其进行了修改,以便拥有 2 个容器。我将新项目添加到带有动画的第一个(顶部)容器中,并且第二个(底部)容器通过幻灯片动画向下移动,如预期的那样。

但是当我从第一个容器中删除项目时,整个第二个容器都在第一个容器下方,而第一个容器正在通过动画缩小高度(而动画正在播放第一个元素的最后一个元素和 2 的第一个元素'nd 相交)。
有什么办法可以让第二个容器在第一个容器收缩时向上滑动?

在此处输入图像描述 在此处输入图像描述

布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#ffffff">

    <ScrollView android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <LinearLayout android:id="@+id/container1"
            android:background="@drawable/border"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:showDividers="middle"
            android:divider="?android:dividerHorizontal"
            android:animateLayoutChanges="true"
            android:paddingLeft="16dp"
            android:paddingRight="16dp" />
    </ScrollView>

    <ScrollView
        android:layout_width="match_parent" android:layout_height="wrap_content">
        <LinearLayout android:id="@+id/container2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:showDividers="middle"
            android:divider="?android:dividerHorizontal"
            android:animateLayoutChanges="true"
            android:paddingLeft="16dp"
            android:paddingRight="16dp" />
    </ScrollView>
</RelativeLayout>
4

1 回答 1

0

这可能不是正确的答案,这个答案肯定为时已晚,但它可能会有所帮助,我遇到了一个类似的问题,其中一个项目正在消失,我希望第二个项目在项目消失时扩展。我setStartDelay()在代码中使用了 LayoutTransitionLayoutTransition.CHANGE_DISAPPEARINGLayoutTransition.DISAPPEARING0,以及setDuration()两者的相同值。您可能不得不弄乱 的这些值LayoutTransition.CHANGING,因为这会影响扩展视图,但老实说LayoutTransition可能无法做到(尽管我绝对不确定),因为虽然扩展视图是 DEFINITELY CHANGING,但第二项向上移动是可能不是CHANGE_DISAPPEARING,虽然你想要一个类似的动画。

我的代码:

        customTransition.setStartDelay(LayoutTransition.DISAPPEARING, 0);
        customTransition.setStartDelay(LayoutTransition.CHANGE_DISAPPEARING, 0);
        customTransition.setDuration(LayoutTransition.DISAPPEARING, hideArticleBar.getDuration());
        customTransition.setDuration(LayoutTransition.CHANGE_DISAPPEARING, hideArticleBar.getDuration());
于 2015-09-21T09:27:51.977 回答