AppBarLayout

Проще говоря, AppBarLayout это LinearLayout на стероидах, их элементы размещены вертикально, с определенными параметрами элементы могут управлять их поведением, когда содержимое прокручивается

В данном случае AppBarLayout это синяя view, размещенная под исчезающим изображением, она содержит Toolbar, LinearLayout с заголовком и подзаголовком и TabLayout с несколькими вкладками.

Мы можем управлять поведением элементов AppbarLayout с помощью параметров: layout_scrollFlags. Значение: scroll в данном случае присутствует почти во всех элементах view, если бы этот параметр не был указан ни в одном из элементов AppbarLayout, он остался бы неизменным, позволяя прокручиваемому контенту проходить позади него.

Со значением: snap, мы избегаем попадания в полу-анимационного-состояния, это значит, что анимация всегда скрывает или отображает полный размер view.

LinearLayout который содержит заголовок и подзаголовок будет всегда отображен при прокручивании вверх, (enterAlways значение), и TabLayoutбудет видим всегда так как на него не установлен ни один флаг.

Как видите настоящая мощь AppbarLayout определяется должным управлением его флагами прокрутки в определенных view.

<AppBarLayout>     <CollapsingToolbarLayout         app:layout_scrollFlags="scroll|snap"         />      <Toolbar         app:layout_scrollFlags="scroll|snap"         />      <LinearLayout         android:id="+id/title_container"         app:layout_scrollFlags="scroll|enterAlways"         />      <TabLayout /> <!-- no flags --></AppBarLayout>

Все эти параметры доступны в документации Google Developers.

Russian source: https://habrahabr.ru/post/270121/

Source: http://saulmm.github.io/mastering-coordinator