首页 > 解决方案 > 父片段被共享元素转换破坏

问题描述

我有一个视图层次结构,如下所示。

在我的 SecondFragment 中,我有一个RecyclerView. 当一个项目被点击时,我想在另一个项目中打开它Fragment(全屏),所以我正在使用该addSharedElement()方法,经过 2 天的复古工程后一切正常:我在 StackOverFlow 上找到的每篇文章都没有提到为了工作,“全屏”片段必须替换活动中的第一个父级。

我首先想要的是将全屏片段嵌套在 SecondFragment 中,但这种方法是不可能的。

我已经尝试了其他所有方法,在我的视图层次结构的每个步骤中,它们都没有工作,除非我用我的全屏片段替换我的 FirstFragment。

问题是addToBackStack(),当我按下NavigationBar. 我不太熟悉该addToBackStack()方法以及如何取回我在那里添加的任何片段。

问题 1:如何在不破坏父片段(我的视图层次结构中的 FirstFragment)或不使用共享元素转换但达到相同结果的情况下使其工作?

似乎过渡正在做的是在新片段中重新创建一个视图,其宽度/高度、x 和 y 坐标与前一个片段中的相同,并从新片段中对其进行动画处理......

问题 2: 自己做会不会是个坏主意?

编辑:我的目标是通过向下滑动关闭全屏片段,一旦手指从 10dp 沿 Y 轴移动,我希望能够显示后面的前一个片段(在我的情况下为 SecondFragment),这就是为什么我不想破坏父片段。

标签: androidandroid-fragmentsandroid-transitionsshared-element-transition

解决方案


推荐阅读