ActionBar vs Toolbar или ActionBar и панель инструментов

Я прочитал о панели инструментов, входящей в библиотеку AppCompat и всех ее функциях. Некоторые из вещей, которые я заметил в блоге разработчиков Android ( здесь ):

Панели инструментов полностью поддерживаются в AppCompat и имеют характеристики и паритет API с виджетами.

Они также упомянули, что мы можем больше контролировать его внешний вид и внешний вид.

Но когда я добавляю активность в Android Studio, я получаю следующее:

<android.support.design.widget.AppBarLayout android:id="@+id/appbar_add_contacts" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay"> </android.support.v7.widget.Toolbar> </android.support.design.widget.AppBarLayout> 

Здесь панель инструментов находится внутри AppBar. (ActionBar и AppBar – это то же самое, не так ли?) Какая польза от этого. В некоторых блогах также я читал, что AppBar можно заменить на панель инструментов библиотеки поддержки дизайна.

Обычно вы получаете content_layout после панели инструментов. Поэтому после панели инструментов у нас будет строка ниже.

 <include layout="@layout/content_myactivity" /> 

Итак, как только у меня возникла проблема с тем, что содержимое находится над панелью инструментов (используется только панель инструментов, а не панель инструментов), скрывающая всю панель инструментов и по-прежнему доступную для кликов. Поэтому мне пришлось переместить панель инструментов под моим контентом в код, чтобы он появился над моим контентом.

Итак, что использовать? Панель инструментов? AppBarLayout? Панель инструментов внутри AppBarLayout?

Каково намеренное использование каждого из них?

ОБНОВЛЕНИЕ :

Поэтому я уже добавил панель инструментов в файл activity_layout. Тогда зачем нужно использовать setSupportActionBar(toolbar); Для установки панели инструментов и добавления темы AppTheme.NoActionBar . Это нормальное поведение со всеми действиями в Android Studio.

Какая польза от отключения панели действий окна с

 <item name="windowActionBar">false</item> 

И установить его с помощью setSupportActionBar(toolbar) ?

AppBarLayout – это контейнер, в котором вы можете разместить ToolBar , TabLayout , что-то еще. Все это будет показано в верхней части экрана, независимо от того, какой макет вы используете для остальной части контента. Вы можете использовать Toolbar без AppBarLayout если хотите, но тогда вам нужно будет включить ее в свою ViewGroup которой вы используете остальную часть контента. И поместите его на дно, так что он не будет накладываться на что-то еще.

AppBar избавляет вас от этого и предоставляет некоторые дополнительные функции, например, поведение прокрутки. Здесь написано здесь.

Также обратите внимание, что AppBarLayout сильно зависит от использования в качестве прямого дочернего AppBarLayout в CoordinatorLayout . Если вы используете AppBarLayout в другой ViewGroup , большая часть его функций не будет работать.

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

Дети должны обеспечивать желаемое поведение прокрутки с помощью setScrollFlags(int) и связанного атрибута xml макета: app: layout_scrollFlags.

Эта точка зрения в значительной степени зависит от того, как она используется в качестве прямого ребенка в рамках CoordinatorLayout . Если вы используете AppBarLayout в другой ViewGroup , большая часть его функций не будет работать.

AppBarLayout также требует отдельного скроллинга, чтобы узнать, когда прокручивать. Связывание выполняется через AppBarLayout.ScrollingViewBehavior поведения AppBarLayout.ScrollingViewBehavior , что означает, что вы должны настроить поведение вашего представления прокрутки как экземпляр AppBarLayout.ScrollingViewBehavior . Доступен строковый ресурс, содержащий полное имя класса.

Вы также реализуете, как AppBarLayout ниже, как несколько дочерних элементов AppBarLayout

 <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <!-- Your scrolling content --> </android.support.v4.widget.NestedScrollView> <android.support.design.widget.AppBarLayout android:layout_height="wrap_content" android:layout_width="match_parent"> <android.support.v7.widget.Toolbar ... app:layout_scrollFlags="scroll|enterAlways"/> <android.support.design.widget.TabLayout ... app:layout_scrollFlags="scroll|enterAlways"/> </android.support.design.widget.AppBarLayout> 

Источник: AppBarLayout

См. Также Структура AppBarLayout