【问题标题】:Why does BottomAppBar must be child of CoordinatorLayout?为什么 BottomAppBar 必须是 CoordinatorLayout 的子级?
【发布时间】:2021-08-09 08:39:13
【问题描述】:
在所有样本和Material Design website 上,BottomAppBar 用作CoordinatorLayout 的直接子代。我读过这是推荐的做法。我已经将它作为ConstraintLayout 的直接孩子尝试过,它工作正常。为什么推荐这个?用CoordinatorLayout包裹起来的目的是什么?
【问题讨论】:
标签:
android
android-layout
material-design
material-components-android
【解决方案1】:
ConstraintLayout 类似于RelativeLayout,它提供了一种灵活的方式来创建平面层次视图。主要原则是帮助relatively positioning 其子视图。但是这种布局在处理动画和父子视图之间的交互方面对您没有多大帮助。
CoordinatorLayout 是作为顶级布局引入的,它有助于处理视图的转换并为其设置动画效果,并为其定义了一些 behavior motions。
我已经尝试将它作为 ConstraintLayout 的直接子级,它工作正常。
是的,您也可以将BottomAppBar 放入ConstrintLayout。但它将作为正常的子视图工作,没有任何运动行为。
为什么推荐这个?把它包裹在 CoordinatorLayout 的目的是什么?
推荐它是因为它可以帮助您处理BottomAppBar 的视图转换和运动行为。