Android 视图立即跳转并闪烁,但animateLayoutChanges=";“真的”;

Android 视图立即跳转并闪烁,但animateLayoutChanges=";“真的”;,android,android-fragments,android-animation,material-design,android-appbarlayout,Android,Android Fragments,Android Animation,Material Design,Android Appbarlayout,我正在使用AppBarLayout中的android:animateLayoutChanges=“true”为我的表格布局设置动画。但是当我设置TabLayout.setVisibility(View.GONE)时,我的片段的容器会立即上升到ActionBar,持续几毫秒。然后它返回到TabLayout的末尾,并随之上升到操作栏。我在下面的gif中解释了这一点 由于某种原因,理论和实践按钮位于表格布局的后面,但隐藏表格布局动画时,会启动FrameContainer,用于保存我的视图的Frame

我正在使用AppBarLayout中的android:animateLayoutChanges=“true”为我的表格布局设置动画。但是当我设置TabLayout.setVisibility(View.GONE)时,我的片段的容器会立即上升到ActionBar,持续几毫秒。然后它返回到TabLayout的末尾,并随之上升到操作栏。我在下面的gif中解释了这一点

由于某种原因,理论实践按钮位于表格布局的后面,但隐藏表格布局动画时,会启动FrameContainer,用于保存我的视图的FrameContainer会粘在表格布局的底部

我录制了一段视频,演示了这种行为。Dropbox视频播放器跳过一些帧,动画看起来不错。这就是为什么,要注意这个错误,你可以在电脑上加载视频,高质量地观看5秒和11秒

我的布局xml:


此外,我正在使用23.2.1支持库


我如何解决这个眨眼和跳跃问题?我浪费了一整天来调查这个问题。 我找到了一个解决这个问题的可能方法。 现在,我通过此代码更改可见性

mTabLayout.postDelayed(new Runnable() {
        @Override
        public void run() {
            switch (newMode) {
                case MODE_CONTENTS:
                    mTabLayout.setVisibility(mContents.isTheoryAvailable() ? View.VISIBLE : View.GONE);
                    break;
                default:
                    findViewById(R.id.content_frame).setVisibility(View.INVISIBLE);
                    mTabLayout.setVisibility(View.GONE);
                    findViewById(R.id.content_frame).setVisibility(View.VISIBLE);
            }
        }
    }, 200);

它运行良好,视图现在不会闪烁。但是在旧的androids上,该漏洞仍然存在。

尝试使用将
android:animateLayoutChanges=“true”
添加到您的视图中

app:layout_behavior="@string/appbar_scrolling_view_behavior
那就是你的抽屉布局。然后启用转换类型
LayoutTransition。对其进行如下更改:

ViewGroup layout = (ViewGroup) findViewById(R.id. drawer_layout);
LayoutTransition layoutTransition = layout.getLayoutTransition();
layoutTransition.enableTransitionType(LayoutTransition.CHANGING);
相关的:

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