替换碎片的高程值错误



你好,堆栈溢出。我还有一个零碎的问题。(我正在使用android.app。碎片不支持碎片)

我正试图替换一个碎片。但这并不像使用那么简单

fragmentTransaction
.replace(containerId, newFragment)
.addToBackStack("unique tag")
.commit()

为什么不呢好问题的朋友们,这是因为我的newFragment有一个过渡动画。

动画在哪里定义另一个很棒的问题,它在CreateAnimator()上的片段中定义

为什么在那里定义它为什么可以找到一个很长的答案:嵌套片段转换不正确。现在,你需要相信这就是我的项目需要做的事情。

动画在做什么从屏幕边缘到屏幕中心的简单滚动,完全覆盖原始片段。请记住,在这种情况下,旧片段只是放在适当的位置。它具有不移动的动画效果。


问题出在哪里

问题是,newFragment的高程(或z?)值似乎比旧的要低。因此,由于旧碎片位于新碎片上方,因此无法观察到过渡。在动画持续时间结束时,您会看到新片段在旧片段上方闪烁。从动画一开始,我就希望新片段能覆盖旧片段。


为什么不使用加法这似乎会产生更多的问题,因为我有很多片段想在视图内外交换。使用add似乎会在下次使用replace时触发它们的退出动画,即使前面有1…n个片段。它们也不会暂停。

为什么不设置高程因为我支持api 19,它没有提升属性。

为什么不将ViewCompat.setElevation()用于api 19我试过了,结果也一样。

有人找到解决这个问题的方法了吗?

我也遇到了同样的问题,花了很多时间试图解决它。不幸的是,根据我的经验,没有办法让它为API工作<19。

CCD_ 2只是<19 API,所以它不能工作。从SDK 21开始,它设置了一个提升,并在某种程度上解决了这个问题。设置Z索引也可以。

我唯一能建议的是改变API<19无论如何都不依赖于Z指数。对于21+,使用您想要的过渡。我就是这样做的,我认为这很好,因为大多数用户都在21+上。

最新更新