假设我们有一个底部导航栏,顶部有一个 FAB。使用此设置并显示 Snackbar 时,Snackbar 应出现在 BottomNavigationBar 上方,并在出现/消失时向上/向下推动 FAB。
这是使用 CoordinatorLayout 的常见场景。是否也可以使用新的 MotionLayout 创建这个动画?
错误跟踪器中存在问题,但它已经关闭,因为 OP 没有明确提出问题(https://issuetracker.google.com/issues/112665540)
我在尝试时遇到的问题:我们无权访问 Snackbar 的 layout-id。我们也无法访问 Snackbar 的通用 xml,因此我们无法设置其约束。
更新:我知道一段代码将有助于作为回答这个问题的起点。但是我想出的任何一段代码都没有用。我现在指出了两个主要问题:
我不知道 Snackbar 的 layout-id。因此我不能用它来写场景描述。
即使我可以创建场景描述(例如 State1:SnackBar 可见,State2:Snackbar 不可见)。我必须手动触发这些场景转换。这意味着我将重新创建自己的 Snackbar,而不是按预期使用原始 Snackbar。
评论: @mikejonesguy 是的,在我看来它们是相似的。不一样,但很相似。而且 MotionLayout 也确实有您描述的工作:协调其子视图之间的交互。用“动画”替换“坐标”,你就会明白我的意思了。还可以查看 OnSwipe/OnClick 处理程序。MotionLayout 还是很新鲜的,但我认为它会在未来取代 CoordinatorLayout,就像 ConstraintLayout 取代 RelativeLayout 一样。也许我错了,也许不是……时间会证明一切。
结论: 就我而言,似乎没有办法(还)仅通过使用 MotionLayout 来实现我想要的。如果有可能有一天,我会用一个工作示例来更新这个问题。对不起,不可能的赏金...... :)