ActionBar vs Toolbar или ActionBar и панель инструментов
Я читал о панели инструментов, входящей в библиотеку AppCompat и всех ее функциях. Некоторые из вещей, которые я заметил в блоге разработчиков Android (здесь):
Панель инструментов полностью поддерживается в AppCompat и имеет свойство и паритет API с виджетами рамки.
Они также упоминали, что мы можем больше контролировать его внешний вид и внешний вид.
Но когда я добавляю активность в Android Studio, я получаю следующее:
Здесь панель инструментов находится внутри AppBar. (ActionBar и AppBar – это то же самое, не так ли?) Какая польза от этого. В некоторых блогах также я читал, что AppBar можно заменить на панель инструментов библиотеки поддержки конструктора.
Обычно вы получаете content_layout после панели инструментов. поэтому у нас будет строка ниже после панели инструментов.
Итак, как только у меня возникла проблема с тем, что содержимое находится над панелью инструментов (используется только панель инструментов, а не внутри панели приложений), скрывающая всю панель инструментов и по-прежнему доступную для кликов. Поэтому мне пришлось переместить панель инструментов ниже моего содержания в коде, чтобы она появилась над моим контентом.
Итак, что использовать? Панель инструментов? AppBarLayout? Панель инструментов внутри AppBarLayout?
Каково намеренное использование каждого из них?
UPDATE
Итак, я уже добавил панель инструментов в файл activity_layout. Тогда зачем использовать setSupportActionBar(toolbar); для установки панели инструментов и добавления темы AppTheme.NoActionBar . Это нормальное поведение со всеми действиями в Android Studio.
Какая польза от отключения панели действий окна с помощью
и установите его с помощью setSupportActionBar(toolbar) ?
AppBarLayout – это контейнер, где вы можете разместить ToolBar , TabLayout , что-то еще. Все это будет показано в верхней части экрана, независимо от того, какой макет вы используете для остальной части контента. Вы можете использовать ToolBar без AppBarLayout , если хотите, но тогда вам нужно будет включить его в свой ViewGroup , который вы используете остальную часть содержимого. И поместите его на дно, так что он не будет накладываться на что-то еще.
AppBar избавляет вас от этого и предоставляет некоторые дополнительные функции, например, поведение прокрутки. Написано здесь, кстати.
Также обратите внимание, что AppBarLayout сильно зависит от использования в качестве прямого дочернего элемента в CoordinatorLayout . Если вы используете AppBarLayout в другом ViewGroup , большая часть его функций не будет работать.
AppBarLayout – это вертикальный LinearLayout , который реализует многие функции концепции панели приложений для материальных конструкций, а именно прокручивающие жесты.
Дети должны указать желаемое поведение прокрутки через setScrollFlags(int) и соответствующий атрибут xml макета: app: layout_scrollFlags.
Это представление сильно зависит от того, как он используется в качестве прямого дочернего элемента в CoordinatorLayout . Если вы используете AppBarLayout в другом ViewGroup , большая часть его функций не будет работать.
AppBarLayout также требует отдельного скроллинга, чтобы узнать, когда прокручивать. Связывание выполняется с помощью класса поведения AppBarLayout.ScrollingViewBehavior , что означает, что вы должны настроить поведение вашего прокрутки как экземпляр AppBarLayout.ScrollingViewBehavior . Доступен строковый ресурс, содержащий полное имя класса.
Вы также реализуете, как показано ниже, как несколько дочерних элементов AppBarLayout
Источник
Должны ли мы заменить панель действий на панель инструментов?
я использую ToolBar Так как он был добавлен в библиотека поддержки v7. И я думаю, что использовал его хорошо. Но есть один момент, который я не могу понять. Зачем Google создавать такой виджет? Я имею в виду, что мы можем сделать все ToolBar можно использовать ActionBar . Почему мы должны использовать ToolBar ? Каковы преимущества ToolBar over ActionBar если какие-то? Это необходимо заменить ActionBar by ToolBar ?
любые советы приветствуются. И спасибо вам продвижение.
PS: нашел ToolBar — Это decandant из ViewGroup . Итак, как мы могли бы использовать ToolBar Как a Layout ? Может ли кто-нибудь опубликовать некоторые коды этого?
10 ответов:
Да, вы должны заменить ActionBar на новую панель инструментов.
Он выглядит современным, и он следует за новым дизайном материала.
в отличие от панель действий, панель инструментов не является частью декора окна. Вы определяете его и размещаете так же, как и любой другой виджет. поэтому у вас есть свобода разместить его в любом месте родительского макета.
У вас есть свобода, чтобы положить любой виджет внутри панель инструментов.
Вы можете определить несколько панелей инструментов.
Я имел в виду, что вы можете разместить другие виджеты (представления) внутри панели инструментов.
создайте отдельный файл макета для панели инструментов (хорошо для повторного использования). В моем случае имя файла main_toolbar.xml
затем включите эту панель инструментов в основной макет, как это
Как вы можете видеть в этом примере я разместил Виджет TextView внутри панели инструментов
зачем Android будет создавать такой виджет?
представьте себе, если хотите, планшет на Android.
на этом планшете работает приложение. Это приложение имеет в правом нижнем углу экрана редактор форматированного текста, где можно ввести некоторые комментарии и отформатировать их с помощью полужирный,курсив и т. д.
в настольном или веб-приложении типичным подходом для этих параметров форматирования, помимо сочетаний клавиш, будет панель инструментов, как тот, который вы видите над текстовой областью ответа здесь на переполнение стека.
до Toolbar , разработчики Android должны были либо свернуть свою собственную панель инструментов, либо поместить действия форматирования в панель действий. Хотя последний подход прост, он накладывает нагрузку на пользователя вышеупомянутого вымышленного приложения, поскольку пользователь должен постоянно переключать свой визуальный фокус с редактора (внизу экрана) на панель действий (вверху экрана).
почему мы должны использовать Панель инструментов?
вы не должны использовать Toolbar . У меня есть
300 примеров приложений в рамках моей книги, и на данный момент, ровно ноль из них используют Toolbar . Мне придется исправить это в какой-то момент, как я еще не написал главу о Toolbar .
необходимо ли заменить ActionBar на панель инструментов?
нет. Есть способ сделать это, но он не нужен.
панель инструментов гораздо более гибкая, чем стандартная панель действий, вы можете добавить гораздо больше инструментов на панели инструментов (поскольку она расширяет ViewGroup) и следовать рекомендациям по дизайну материалов.
например, с помощью панели инструментов можно сделать следующее:
обычная панель действий не предназначена для расширения таким образом.
кроме того, вы можете лучше манипулировать содержимым панели инструментов, поскольку вы можете включить его в свой xml-файл макета активности. Лично я использую LinearLayout или RelativeLayout с верхней, панели инструментов и ниже, заполняя оставшееся пространство, FrameLayout, где будут добавлены мои фрагменты.
наконец, вы можете разместить панель инструментов в любом месте, как вы установите его в файле макета.
обновление:
компания Google выпустила Библиотека Поддержки Дизайна Android. Рекомендуемый способ получить расширенную панель приложений-обернуть Toolbar с AppBarLayout и добавить дополнительные представления, такие как TabLayout in. Чтобы получить FAB над панелью инструментов, как на этом скриншоте, вы можете использовать CoordinatorLayout чтобы обернуть содержимое макета, а затем использовать атрибуты привязки на FAB.
стандартный toolbar предназначен для использования в контент приложения.
A Toolbar обобщение action bar s для использования в макетах приложений. В то время как action bar традиционно является частью Activity С непрозрачной window decor контролируется framework , a Toolbar может быть размещен на любом произвольном уровне вложенности в иерархии представления. Приложение может выбрать для обозначения Toolbar как action bar на Activity С помощью setActionBar() метод.
Toolbar поддерживает более сфокусированный набор функций, чем ActionBar . От начала до конца, toolbar может содержать следующие необязательные элементы:
- кнопку навигации. Это может быть Up arrow , навигационное меню , закрыть, свернуть, готово или другой глиф по выбору приложения. Этот кнопка всегда должна использоваться для доступа к другим навигационным пункты назначения в контейнере Toolbar и его значение содержание или иным образом оставить текущий контекст, обозначенный Toolbar . Навигационная кнопка выровнена по вертикали в пределах Toolbar минимальная высота, если установлено.
- фирменное изображение логотипа. Это может распространяться на высоту штанги и может быть сколь угодно широким.
- название и подзаголовок. Название должно быть указателем для Toolbar текущая позиция в иерархии навигации и содержание там. Элемент subtitle , если они присутствуют, должны сообщить о любых расширенный информация о текущем содержании. Если приложение использует logo image он должен серьезно рассмотреть без title и subtitle .
- одно или несколько пользовательских представлений. Приложение может добавить произвольный ребенок взгляды на Toolbar . Они появятся на этой позиции в макет. Если дочернее представление Toolbar . LayoutParams показывает Gravity значение CENTER_HORIZONTAL вид будет пытаться центрироваться в пределах свободное место остается в Toolbar ведь другие элементы были измерены.
- меню Действие. Элемент menu действий будет прикрепить к концу Toolbar предлагая несколько частых, важных или типичных действий вдоль с дополнительным overflow menu дополнительные действия. Action кнопки вертикально выровнены в пределах Toolbar минимальная высота, если установлено.
современной Android разработчики UIs должны больше полагаться на визуально различимую цветовую схему для панелей инструментов, чем на их приложение икона. Использование значка приложения плюс заголовок в качестве стандартного макета не рекомендуется на устройствах API 21 и более новых.
почему мы должны использовать ToolBar ?
панель инструментов используется для совместимости с предварительными устройствами и обратным портом, которую не обеспечивает старая библиотека поддержки. Помните ActionbarSherlock , android сделал там собственный для поддержки actionbar на устройствах API низкого уровня.
каковы преимущества ToolBar over ActionBar если какие-то?
вы можете легко добавить пользовательский вид С в XML панели инструментов, как относительный вид макета, особенно пользовательский заголовок и значки с анимацией. У вас есть больше контроля на панели инструментов, а не старый обычный actionbar.
необходимо ли заменить ActionBar by ToolBar ?
если вы собираетесь поддерживать actionbar на устройствах ниже 2.0, то да, вам нужна совместимость с обратным портом для панели действий.
- вы можете легко настроить панель инструментов.
- вы можете добавить много виджетов внутри панели инструментов.
- можно добавить панель инструментов в вашем представлении.
- У вас есть свобода разместить его в любом месте родительского макета.
- у них есть собственная обработка / управление дочерним представлением it.
панель инструментов-это обобщение панелей действий для использования в макетах приложений. В то время как панель действий традиционно является частью непрозрачного декора окна активности, контролируемого рамкой,панель инструментов может быть размещена на любом произвольном уровне вложенности в иерархии представлений. Приложение может выбрать Панель инструментов в качестве панели действий для действия с помощью метода setActionBar (). Вы можете найти дополнительную информацию здесь. Мы заменили нашу панель действий, как это было проще настроить панель инструментов для дизайна материалов. Например, цветовые палитры и поведение исчезающей анимации. Лично я не понимаю, почему android выбрасывает старые элементы управления и создает новый. Другим примером может быть RecyclerView. Не понимаю, почему они просто не улучшили старый API.
Примечание: оба будут поддерживать общую навигацию приложения, значки и имеют обратную поддержку.
ответ зависит от того, какое взаимодействие с пользователем(анимация панели инструментов) требует ваш дизайн. При этом вы должны реализовать анимацию на панели инструментов, чтобы сделать ее материальной.
ActionBar:
Если вы просто хотите статическую панель в верхней части, которая может содержать значки, кнопку назад, и вы можете тему.
панели инструментов:
Если вы хотите чтобы сделать что-нибудь за пределами статической панели, такой как анимация.
общая реализация и рекомендации по дизайну Google-скрыть панель инструментов при прокрутке. контрольный список Material Design: скрытие панели приложений на прокрутке?
поддержка Toolbar дает вам гораздо больше гибкости и свободы, практически без дополнительных затрат, что нет никаких причин, я не могу думать о том, чтобы не сделать переход. Переход на новый Toolbar на самом деле это один из первых шагов к переносу существующих приложений на более материальный дизайн, из-за простоты задачи и немедленного эффекта, который он оказывает на общий внешний вид приложения.
обратите внимание, что он не включает код, где вы включаете его в другие файлы макета:
почему я перешел на панель инструментов — одна из причин, по которой я изменил недавнее приложение на панель инструментов, заключалась в том, что когда мы хотели настроить панель действий, она не работала на разных версиях Android или когда мы расширяли определенные классы (делая их прозрачными или прозрачными). Отображение значка вместо имени приложения). Панели инструментов позволили нам параметры настройки, которые мы хотим.
Источник
ActionBar (Панель действий)
3-й курс/Закрытая зона
Немного теории
Начиная с Android 3.0 (API 11), в приложениях появилась возможность использовать панель действий ActionBar, которая сочетает в себе заголовок и меню, упрощая навигацию и предоставляя быстрый доступ к частым операциям.
ActionBar заменяет Options Menu, которое было в ранних версиях Android, используя новые дополнительные параметры для меню. По умолчанию, новые проекты, создаваемые через шаблоны Empty Activity и др., уже содержат ActionBar. Следует отметить, что в Android 5.0 появился новый компонент Toolbar, который является дальнейшим развитием ActionBar. И он активно вытесняет панель действий. Но вам всё равно следует изучить работу ActionBar, так как основные принципы работы завязаны на ней.
Если запустить программу как есть из шаблона Empty Activity, то увидим заголовок программы.
Если в код программы добавить методы для меню, то справа появится значок из трёх вертикальных точек.
Если щёлкнуть по значку из трёх точек, выстроенных по вертикали, то увидим всплывающее меню с единственным пунктом Settings. Не прикладывая никаких усилий, мы получили готовый элемент ActionBar в своём приложении.
Давайте разбираться, что происходит за кулисами приложения. За появление панели действий отвечает тема Theme.Holo или её производные. В API 21 и выше произошли небольшие изменения. Как я уже сказал выше, появился новый компонент ToolBar, который может заменить панель действий в активности. Поэтому тут нужно быть внимательным и выбирать соответствующую тему, например, Theme.Material.Light.DarkActionBar. Для старых устройств используются библиотеки совместимости. В этом случае активность наследуется от AppCompatActivity, а используемая тема Theme.AppCompat или его производные, например, Theme.AppCompat.Light.DarkActionBar.
В студии версии 4.1 снова всё поменяли и теперь используется тема Theme.MaterialComponents.DayNight.DarkActionBar.
Прячем и показываем ActionBar
Изначально существовали два вида ActionBar для новых устройств и для старых устройств при помощи библиотеки совместимости. Не смешивайте вызовы методов из разных классов, а то получите ошибку. На сегодняшний день студия создаёт проекты с применением библиотеки AndroidX, поэтому будем использовать классы из неё.
Чтобы увидеть разницу в активности с ActionBar и без неё, напишем простой пример. Добавим на форму компонент ToggleButton и пропишем код, скрывающий и показывающий ActionBar:
Вы вошли на сайт, как гость.
Необходимо зарегистрироваться, чтобы прочитать статью
Источник