当将可见性改为消失时,animateLayoutChanges buggy

时间:2016-06-08 13:34:08

标签: android android-layout android-fragments android-animation android-linearlayout

我有一个包含情侣视图的列表(容器)我想在点击折叠/展开按钮时隐藏并再次显示。

到目前为止没有问题,现在我想隐藏和显示我的嵌套视图动画,我不想复杂化动画,我选择了默认设置。

这就是为什么我添加了android:animateLayoutChanges =" true"对于容器布局,这在显示/展开视图时效果很好,但在隐藏/折叠视图时看起来很糟糕。

这种行为背后有什么特别的原因吗?

以下代码和示例:

enter image description here

代码

容器布局

            <LinearLayout
                android:id="@+id/izdelek_podrponud_container"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:animateLayoutChanges="true"
                >

            </LinearLayout>

子视图布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/spacing_medium"
android:paddingBottom="@dimen/spacing_medium"
android:gravity="center_vertical">

<View
    android:layout_width="5dp"
    android:layout_height="5dp"
    android:background="@color/colorPrimary"/>
<TextView
    android:id="@+id/row_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="@dimen/spacing_small"
    android:textSize="@dimen/font_size_60px"
    android:textColor="@color/black"/>
</LinearLayout>

这就是我处理显示和隐藏的方式;

private void showViews(LinearLayout container, int visible, boolean show) {
    if (container.getChildCount() > visible) {
        for (int i = visible; i < container.getChildCount(); i++) {
            if (show) {
                container.getChildAt(i).setVisibility(View.VISIBLE);
            } else {
                container.getChildAt(i).setVisibility(View.GONE);
            }
        }
    }
}

0 个答案:

没有答案