你好,堆栈溢出。我还有另一个片段问题。 (我使用的是 android.app.Fragment 不支持片段)
我正在尝试替换一个片段。但这并不像使用那么简单:
fragmentTransaction
.replace(containerId, newFragment)
.addToBackStack("unique tag")
.commit()
Why not?朋友们,问得好,因为我的newFragment
有过渡动画。
动画在哪里定义的?另一个很好的问题,它在 onCreateAnimator() 片段中定义
为什么它被定义在那里?可以找到一个很长的答案:嵌套片段转换不正确 https://stackoverflow.com/questions/46859132/nested-fragments-transitioning-incorrectly/46897503#46897503。现在你需要相信这就是我的项目中需要完成的事情。
动画在做什么?从屏幕边缘到屏幕中心的简单滚动,完全覆盖原始片段。请记住,在这种情况下,旧片段只是坐在原处。它具有不动的动画效果。
问题是什么?
问题是 newFragment 的高程(或 z?)值似乎比旧的低。因此无法观察到转换,因为旧片段位于新片段之上。到达动画持续时间结束时,您会看到新片段在旧片段上方闪烁。我希望新的片段从动画一开始就覆盖旧的片段。
为什么不使用添加呢?这似乎会产生更多问题,因为我有很多片段想要在视图中交换。下次我使用replace时,使用add似乎会触发它们的退出动画,即使它前面有1...n个片段。他们也不会停下来。
为什么不设置海拔?因为我支持 api 19,它没有海拔属性。
为什么 api 19 不使用 ViewCompat.setElevation() ?我尝试了一下,也得到了同样的失败结果。
有没有人找到解决这个问题的方法?