是一个加强版的FrameLayout,普通情况下的作用和FrameLayout基本一致。CoordinatorLayout可以监听其所有子控件的各种事件,然后作出最合理的响应。
例子
- 在没有使用CoordinatorLayout控件时,如果点击FloatingActionButton显示Snackbar时,则会出现遮挡的现象
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom"
android:layout_margin="16dp"
android:src="@drawable/icon_tab_publish"
app:elevation="8dp" />
fab.setOnClickListener {
Snackbar.make(it,"data deleted",Snackbar.LENGTH_LONG)
.setAction("cancel",object :View.OnClickListener{
override fun onClick(p0: View?) {
}
}).setBackgroundTint(Color.GRAY)
.setActionTextColor(Color.BLACK)
.setTextColor(Color.WHITE)
.show()
}
//这时Snackbar第一个参数传递的时,当前fab
- 使用CoordinatorLayout控件后,会对Snackbar进行监听,从而使Snackbar显示时不遮挡
<!--加入CoordinatorLayout控件-->
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom"
android:layout_margin="16dp"
android:src="@drawable/icon_tab_publish"
app:elevation="8dp" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
这时代码中点击后,显示Snackbar,因为Snackbar第一个参数传递的是fab,所以外层控件CoordinatorLayout会监听到Snackbar的动作,从而作出响应