CoordinatorLayout 本身并没有做太多事情:和标准的 framework 视图一起使用时,它就跟一个普通的 FrameLayout 差不多。那么它的神奇之处来自于哪里呢?答案就是 CoordinatorLayout.Behavior。通过为 CoordinatorLayout 的直接子 view 设置一个 Behavior,就可以拦截 touch events, window insets, measurement, layout, 和 nested scrolling 等动作。Design Library 大量利用了 Behaviors 来实现你所看到的功能。