LinearLayout 中的 AnimateLayoutChanges=true 在 ViewPager2 中不起作用

Posted

技术标签:

【中文标题】LinearLayout 中的 AnimateLayoutChanges=true 在 ViewPager2 中不起作用【英文标题】:AnimateLayoutChanges= true in LinearLayout does't work in ViewPager2 【发布时间】:2021-12-31 23:23:21 【问题描述】:

我有一个以 LinearLayout 作为父级的自定义视图。自定义视图有 2 个子视图。一个默认可见,另一个在单击第一个可见子项时可见。我在父线性布局中添加了标签 android:animateLayoutChanges="true" ,以便在显示隐藏的孩子时它应该动画。所以我在片段中的回收站视图项目中使用了这个自定义视图。每当我在自定义视图中显示或隐藏任何子视图时,它都会完美地动画。但是当我在 ViewPager2 中使用相同的片段时,相同的回收器。它既不显示动画也不显示视图。下面是自定义视图的xml文件。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/deliveryByLayout"
    android:layout_
    android:layout_
    android:animateLayoutChanges="true"
    android:gravity="center_vertical"
    android:orientation="horizontal"
    tools:ignore="UnusedAttribute">

    <TextView
        style="@style/text_black_10_regular"
        android:layout_
        android:layout_
        tools:visibility="visible"
        android:visibility="gone"
         />

    <ImageView
        android:layout_
        android:layout_
        android:contentDescription="@null"
       />

</LinearLayout>

【问题讨论】:

【参考方案1】:

您可以使用默认禁用的布局转换类型 CHANGING。在代码中启用它:

ViewGroup layout = (ViewGroup) findViewById(R.id.deliveryByLayout);
LayoutTransition layoutTransition = layout.getLayoutTransition();
layoutTransition.enableTransitionType(LayoutTransition.CHANGING);

【讨论】:

以上是关于LinearLayout 中的 AnimateLayoutChanges=true 在 ViewPager2 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

一次获取 LinearLayout 中的所有子视图

相当于Android SDK上LinearLayout中的“溢出”属性?

如何删除GridView内LinearLayout中的空白?

LinearLayout中的重力 - android?

android studio中的linearlayout是啥意思

如何在android中使LinearLayout中的TextView拖动平滑?