O que é um CoordinatorLayout? Não se deixe enganar pelo nome extravagante, nada mais é do que um FrameLayout com esteróides
Para entender melhor o que a CoordinatorLayout
é / faz, você deve primeiro entender / ter em mente o que significa Coordenar.
Se você pesquisar a palavra no Google
Coordenada
Isto é o que você recebe:
Acho que essas definições ajudam a descrever o que um CoordinatorLayout faz por conta própria e como as visualizações dentro dele se comportam.
Um CoordinatorLayout (um ViewGroup) traz os diferentes elementos (Visualizações filhas) de um (̶a̶ ̶c̶o̶m̶p̶l̶e̶x̶ ̶a̶c̶t̶i̶v̶i̶t̶y̶ ̶o̶r̶ ̶a̶n̶ ̶o̶r̶g̶a̶n̶i̶z̶a̶on a em uma relação harmoniosa ou eficiente)
Com a ajuda de um CoordinatorLayout, as visualizações filho trabalham juntas harmoniosamente para implementar comportamentos incríveis, como
arrasta, desliza, arremessa ou qualquer outro gesto.
As visualizações dentro de um CoordinatorLayout negociam com outras pessoas a fim de trabalharem juntas de forma eficaz, especificando esses comportamentos
Um CoordinatorLayout é um recurso super legal do Material Design que ajuda a criar layouts atraentes e harmonizados.
Tudo o que você precisa fazer é agrupar as visualizações filhas dentro do CoordinatorLayout.
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="com.byte64.coordinatorlayoutexample.ScollingActivity">
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="@dimen/app_bar_height"
android:fitsSystemWindows="true"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/toolbar_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/AppTheme.PopupOverlay" />
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_scolling" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/fab_margin"
app:layout_anchor="@id/app_bar"
app:layout_anchorGravity="bottom|end"
app:srcCompat="@android:drawable/ic_dialog_email" />
</android.support.design.widget.CoordinatorLayout>
e content_scrolling:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.byte64.coordinatorlayoutexample.ScollingActivity"
tools:showIn="@layout/activity_scolling">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/text_margin"
android:text="@string/large_text" />
</android.support.v4.widget.NestedScrollView>
O que isso nos dá é um layout que pode ser rolado para recolher a barra de ferramentas e ocultar o FloatingActionButton
Abrir:
Fechadas: