替换片段的高程值错误
Posted
技术标签:
【中文标题】替换片段的高程值错误【英文标题】:Replacing fragments have wrong elevation value 【发布时间】: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)
。
【参考方案1】:
我遇到了同样的问题,并且花了很多时间试图解决它。不幸的是,根据我的经验,在此设置上无法使其适用于 API
ViewCompat.setElevation()
只是
我唯一能建议的是将 API
【讨论】:
恐怕这是我唯一的选择。以上是关于替换片段的高程值错误的主要内容,如果未能解决你的问题,请参考以下文章
错误检测------try-catch语句 From 《高程3》
Choose unique values for the 'webAppRootKey' context-param in your web.xml files! 错误的解决(代码片段