我可以在不重新创建任何内容的情况下立即将片段移动到其他地方吗?

Posted

技术标签:

【中文标题】我可以在不重新创建任何内容的情况下立即将片段移动到其他地方吗?【英文标题】:Can I move a fragment elsewhere instantly without recreating anything? 【发布时间】:2018-08-07 22:35:56 【问题描述】:

这听起来可能很愚蠢,但我可以这样做吗?我搜索了一下,this 说“重新附加一个片段......导致它的视图层次结构被重新创建,附加到 UI 并显示。”,可能意味着重新创建片段的 UI丢失状态和其他东西。

我尝试这样做的原因是我想实现类似谷歌地图底部表格的东西。唯一的标题部分显示在底部,但我们可以向上滑动它,它就变成了底部工作表。我认为当只显示标题部分时,它实际上不是底部表,因为很难准确地显示底部表的那部分。我认为 Google 地图已将标题部分分开放置,并且正在将其替换为底部表,当开始向上滑动时,其顶部看起来就像标题部分。

所以,为了达到类似的效果,我想我会创建一个 UI 集群作为片段,当用户开始向上滑动时,我放置一个底部工作表,其 peek 大小正好设置为片段的高度,并将片段移动到底部工作表的顶部,以便向上滑动。

但我想保留片段的所有内容而不重新创建任何内容,就好像我拿起片段并立即移动到片段中一样。这可能吗,或者我应该保存状态并在重新创建片段的 UI 时恢复它们?

【问题讨论】:

【参考方案1】:

是的。 将片段视为View 并根据行为使用ObjectAnimator 或任何动画类。 (上滑动画就可以了)

注意:即使您在主布局上显示 20% 的部分,片段也会首先初始化。 状态将保持不变我猜这确实回答了你的问题。

以下是您的解决方法的类似示例。 Reference

【讨论】:

以上是关于我可以在不重新创建任何内容的情况下立即将片段移动到其他地方吗?的主要内容,如果未能解决你的问题,请参考以下文章

恢复片段而不重新创建?

我们可以在不重新加载页面的情况下重置 r 中的页面或对象吗

我是否可以在不立即呈现更改的情况下更新Firestore文档?

我可以在不膨胀/重新膨胀布局的情况下将视图添加到滚动视图吗?

Jetpack Navigation Drawer 总是重新创建片段

在不重新加载页面的情况下请求内容[关闭]