【发布时间】:2018-04-12 01:56:21
【问题描述】:
你好再次堆栈溢出。我还有另一个片段问题。 (我使用的是 android.app.Fragment 不支持 Fragments)
我正在尝试替换片段。但这并不像使用那么简单:
fragmentTransaction
.replace(containerId, newFragment)
.addToBackStack("unique tag")
.commit()
为什么不呢?好问题朋友,因为我的newFragment 有一个过渡动画。
动画在哪里定义?另一个很好的问题,它在片段 onCreateAnimator() 中定义
为什么要在那里定义它? 可以找到原因的详细答案:Nested fragments transitioning incorrectly。现在你需要相信这就是我的项目需要做的事情。
动画在做什么? 从屏幕边缘到屏幕中心的简单滚动,完全覆盖原始片段。请记住,在这种情况下,旧片段只是原地不动。有不动的动画效果。
有什么问题?
问题在于 newFragment 的海拔(或 z?)值似乎比旧的低。因此无法观察到过渡,因为旧片段位于新片段上方。在动画持续时间结束时,您会看到新片段在旧片段上方闪烁。我希望 newFragment 从动画开始就覆盖旧的。
为什么不使用 add? 这似乎会带来更多问题,因为我有很多片段要换入和换出视图。下次我使用替换时,使用 add 似乎会触发他们的退出动画,即使它前面有 1...n 个片段。他们也不会暂停。
为什么不设置海拔?因为我支持没有海拔属性的 api 19。
为什么不将 ViewCompat.setElevation() 用于 api 19? 我试过了,结果同样失败。
有没有人找到解决这个问题的方法?
【问题讨论】:
-
在提交事务之前,您是否尝试过申请
setReorderingAllowed(false)? -
@azizbekian 仅适用于 API 26+
-
不完全正确,支持片段至少可用于 API 14 及更高版本。
-
对不起,我没有使用支持片段管理器
-
对于框架片段使用
setAllowOptimization(false)。
标签: android android-fragments android-transitions fragmenttransaction fragment-animation