gpt4 book ai didi

android - 替换 fragment 的高程值错误

转载 作者:IT老高 更新时间:2023-10-28 23:35:35 27 4
gpt4 key购买 nike

你好再次堆栈溢出。我还有另一个 fragment 问题。 (我使用的是 android.app.Fragment 不支持 Fragments)

我正在尝试替换 fragment 。但这并不像使用那么简单:

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

为什么不呢?好问题 friend ,因为我的 newFragment 有一个过渡动画。

动画在哪里定义?另一个很好的问题,它在 fragment onCreateAnimator() 中定义

为什么要在那里定义? 可以找到为什么的长答案:Nested fragments transitioning incorrectly .现在你需要相信这就是我的项目需要做的事情。

动画在做什么?从屏幕边缘到屏幕中心的简单滚动,完全覆盖原始 fragment 。请记住,在这种情况下,旧 fragment 只是原地不动。有不动的动画效果。


有什么问题?

问题在于 newFragment 的海拔(或 z?)值似乎比旧的低。因此无法观察到过渡,因为旧 fragment 位于新 fragment 上方。在动画持续时间结束时,您会看到新 fragment 在旧 fragment 上方闪烁。我希望 newFragment 从动画开始就覆盖旧的。


为什么不使用 add? 这似乎会产生更多问题,因为我有很多 fragment 要换入和换出 View 。下次我使用替换时,使用 add 似乎会触发它们的退出动画,即使它前面有 1...n 个 fragment 。他们也不会暂停。

为什么不设置海拔?因为我支持没有海拔属性的 api 19。

为什么不将 ViewCompat.setElevation() 用于 api 19? 我试过了,结果同样失败。

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

最佳答案

我遇到了同样的问题,并且花了很多时间试图解决它。不幸的是,根据我的经验,在此设置上无法使其适用于 API <=19。

ViewCompat.setElevation() 只是 <=19 API 的 NoOp,因此无法工作。从 SDK 21 开始,它设置了一个海拔,它有点解决了这个问题。设置 Z 索引也可以。

我唯一能建议的是将 API <=19 的转换更改为不依赖于 Z 索引。对于 21+ 使用您想要的过渡。我就是这样做的,我认为这很好,因为大多数用户都在 21 岁以上。

关于android - 替换 fragment 的高程值错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47026230/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com