- Программно свернуть или развернуть CollapsingToolbarLayout
- 9 ответов
- Русские Блоги
- Обучение AppBarLayout и CollapsingToolbarLayout от MaterialDesign
- 1. Краткое введение
- Два, используйте
- 1、CoordinatorLayout
- 2、AppBarLayout
- 3、CollapsingToolbarLayout
- Android AppBarLayout And Toolbar Example
- 1. How To Control Android App Toolbar Show / Hide Behavior.
- 2. Scroll RecyclerView To Show / Hide Toolbar Example.
Программно свернуть или развернуть CollapsingToolbarLayout
Простой вопрос, но я не могу найти ответа. Как я могу программно свернуть или развернуть CollapsingToolbarLayout ?
9 ответов
Используя библиотеку поддержки v23, вы можете позвонить appBarLayout.setExpanded(true/false) .
Чтобы развернуть / свернуть AppBarLayout программно:
Я использую это
Это может помочь развернуть или свернуть:
Развернуть
Чтобы вспомнить
Для тех, кто хочет работать с onNestedPreScroll и получать такую же ошибку, как я. я получаю NullPointerException в onCreate без этой строки
И не работает с этим должным образом. но я обхожу эту проблему с
Используйте mAppBarLayout.setExpanded(true) , чтобы развернуть Панель инструментов, и используйте mAppBarLayout.setExpanded(false) , чтобы свернуть Панель инструментов.
Если вы хотите программно изменить высоту CollapsingToolbarLayout , просто используйте mAppBarLayout.setLayoutParams(params) ;
Развернуть:
Свернуть:
Я написал небольшое расширение для AppBarLayout . Он позволяет разворачивать и сворачивать CollapsibleToolbarLayout как с анимацией, так и без нее. Вроде все делает правильно.
Просто используйте его вместо своего AppBarLayout , и вы можете вызывать методы, отвечающие за раскрытие или сворачивание CollapsingToolbarLayout .
В моем проекте он работает точно так, как ожидалось, но вам может потребоваться настроить значения переброса / прокрутки в методах perform. (особенно в performExpandingWithAnimation() ), чтобы они идеально соответствовали вашему CollapsibleToolbarLayout .
Вы можете определить, насколько он расширяется или сворачивается с помощью вашего настраиваемого аниматора. Просто используйте setTopAndBottomOffset(int) .
Источник
Русские Блоги
Обучение AppBarLayout и CollapsingToolbarLayout от MaterialDesign
1. Краткое введение
AppBarLayout и CollapsingToolbarLayout, которые будут представлены в этой статье, — это новые элементы управления, которые появляются с MaterialDesign. Их роль заключается в «улучшении» панели инструментов. Их внешний вид делает панель инструментов не просто скучной «панелью действий», а Поистине духовная и динамичная панель инструментов приложения. Давайте посмотрим, как они используются.
Два, используйте
1、CoordinatorLayout
Прежде чем использовать AppBarLayout и CollapsingToolbarLayout, давайте сначала поговорим об этом CoordinatorLayout. CoordinatorLayout буквально переводится как «координирующий макет». Как следует из названия, он используется для координации вложенных макетов и элементов управления. Чтобы использовать его, вы должны установить его как корень всего макета. В то же время установите для свойства app: appbar_scrolling_view_behavior значение «специальный дочерний элемент управления» Значение для координации позиции отображения дочернего элемента управления во всем макете. Эта статья не будет подробно объяснять это, нам нужно только знать, что для использования AppbarLayout для «улучшения» Toolbar вам необходимо использовать CoordinatorLayout. Пример кода для использования CoordinatorLayout:
Из приведенного выше кода мы можем узнать, что для элемента управления NestedScrollView установлено только свойство app: appbar_scrolling_view_behavior. Да, NestedScrollView является упомянутым выше «специальным дочерним элементом управления». Существует 3 таких «специальных дочерних элемента управления», соответственно. Использование RecyclerView, ViewPager и NestedScrollView в основном одинаково, а свойство app: appbar_scrolling_view_behavior действительно только для этих трех «специальных дочерних элементов управления». Для этого NestedScrollView вы можете рассматривать его как расширенную версию ScrollView. Что ж, давайте представим главного героя этой статьи.
2、AppBarLayout
Ниже приводится описание AppBarLayout в официальном документе:
AppBarLayout — это вертикальный LinearLayout, который реализует функцию жестов прокрутки панели приложения в Material Design. Дочерний View AppBarLayout должен объявлять желаемое «поведение при прокрутке», которое может быть определено свойством layout_scrollFlags или методом setScrollFlags ().
AppBarLayout работает только как прямой дочерний View для CoordinatorLayout.
Чтобы AppBarLayout знал, когда прокручивать дочерние представления, мы также должны предоставить прокручиваемый вид в макете CoordinatorLayout, который мы называем прокручиваемым представлением. Связь между представлением с прокруткой и AppBarLayout устанавливается путем установки для Behavior представления с прокруткой значения AppBarLayout.ScrollingViewBehavior.
В сочетании с кодом, опубликованным в разделе CoordinatorLayout выше, вторую половину этого описания нетрудно понять, и более сложным для понимания должен быть атрибут layout_scrollFlags. Прокручиваемый вид в описании — это упомянутый выше «специальный дочерний элемент управления». Имейте в виду, что в описании говорится, что свойство layout_scrollFlags установлено для прямых дочерних элементов управления AppbarLayout. Давайте посмотрим, какие свойства ayout_scrollFlags доступны:
Значение атрибута scrollFlags | эффект |
---|---|
scroll | Пусть AppBarLayout и представление прокрутки будут интегрированы, когда прокручиваемое представление прокручивается, AppBarLayout также прокручивается вместе с ним. Это обязательное значение для «расширенной» панели инструментов, и его можно использовать с другими значениями для достижения различных «расширенных» эффектов. При использовании только прокрутки эффект аналогичен добавлению HeaderView в ListView. |
scroll
Значение атрибута scrollFlags | эффект |
---|---|
scroll | enterAlways | Когда прокручиваемое представление прокручивается вверх, AppBarLayout также выкатывается за пределы экрана.После прокрутки представления прокручивается вниз, AppBarLayout также перемещается на экран. |
enterAlways
Значение атрибута scrollFlags | эффект |
---|---|
scroll | enterAlways | enterAlwaysCollapsed | Когда прокручиваемый вид прокручивается вверх, AppBarLayout также выкатывается за пределы экрана. Когда прокручиваемый вид прокручивается вниз, AppBarLayout сначала медленно прокручивается до свернутой высоты (т. Е. Минимальной высоты), пока прокручиваемый вид не прокручивается вверх, AppBarLayout затем Сначала медленно прокрутите до исходной высоты (в это время вид прокрутки также снова будет прокручиваться вместе с AppBarLayout). |
enterAlwaysCollapsed
Значение атрибута scrollFlags | эффект |
---|---|
scroll | exitUntilCollapsed | Когда прокручиваемое представление прокручивается вверх, AppBarLayout также выкатывается за пределы экрана вместе, пока не достигнет высоты сворачивания (т. Е. Минимальной высоты). В это время AppBarLayout больше не прокручивается, то есть не полностью скатывается с экрана, и когда прокручиваемый вид прокручивается вниз до максимума Вверху AppBarLayout будет затем прокручиваться в режиме прокрутки, пока не достигнет исходной высоты. |
exitUntilCollapsed
Значение атрибута scrollFlags | эффект |
---|---|
scroll | snap | Snap имеет значение спешки, и эффект такой же, как и означает. Когда прокручиваемое представление находится в состоянии, когда оно больше не может прокручиваться вниз (то есть достигло вершины), прокрутите прокручиваемое представление вверх в это время, и AppBarLayout сразу же развернется с экрана, или Прокрутите страницу прокрутки вниз, AppBarLayout сразу перейдет на экран. Есть ощущение тяжести. |
Что ж, «улучшение» панели инструментов AppBarLayout почти похоже на это, но, чтобы исправить один момент, на самом деле AppBarLayout — это не просто «улучшение» панели инструментов, это то же самое для других элементов управления, но более распространена комбинация AppBarLayout и панели инструментов. Теперь давайте посмотрим, как CollapsingToolbarLayout может «улучшить» панель инструментов.
3、CollapsingToolbarLayout
«Улучшение» CollapsingToolbarLayout для панели инструментов состоит в том, что она делает панель инструментов складной, чтобы на ней было больше интерактивных шаблонов (фактически, больше интерактивной анимации). Давайте сначала посмотрим на эффекты, которые могут быть достигнуты:
Чтобы добиться эффекта, показанного на рисунке выше, его необходимо использовать вместе с AppBarLayout. Использовать CollapsingToolbarLayout очень просто. Просто оберните панель инструментов напрямую. Элемент управления ImageView можно добавить в качестве «фона» CollapsingToolbarLayout. Фактически, CollapsingToolbarLayout сам является FrameLayout, поэтому его дочерние элементы управления Размещение должно начинаться с левого верхнего угла и складываться по очереди. Однако по умолчанию панель инструментов сначала скрыта.
В этом коде есть деталь, требующая внимания. Вы можете обнаружить, что свойство app: layout_scrollFlags больше не установлено для панели инструментов в коде, а для элемента управления CollapsingToolbarLayout. Это неудивительно, поскольку, как упоминалось выше, свойство app: layout_scrollFlags установлено для прямых дочерних элементов управления AppBarLayout. Посмотрим, как это работает:
Это эффект по умолчанию. Вы можете видеть, что во время процесса прокрутки ImageView и заголовок прокручиваются вверх или вниз вместе. В этом процессе панель инструментов будет отображаться только тогда, когда CollapsingToolbarLayout свернут, а заголовок выполнил масштабирование, положение и прозрачность. Дождитесь анимации, и панель инструментов выполнит прозрачную анимацию.Два заголовка перекрываются или разделяются, и похоже, что есть только один заголовок. Кроме того, в приведенном выше коде макета есть стили для панели инструментов, но он не работает. CollapsingToolbarLayout предоставляет атрибуты стиля текста, которые могут устанавливать стили текста для большого заголовка (расширенный заголовок) и подзаголовка (свернутый заголовок) соответственно.
Код стиля текста в style.xml выглядит следующим образом:
Установите стиль развернутого заголовка и стиль свернутого заголовка для CollapsingToolbarLayout соответственно
Этого недостаточно. Если вы хотите изменить цвет фона на сплошной цвет и строку состояния, когда CollapsingToolbarLayout свернут, вы можете установить это с помощью следующего кода:
ContentScrim устанавливает цвет фона CollapsingToolbarLayout при сворачивании. statusBarScrim устанавливает цвет строки состояния, когда она сложена, что может обеспечить эффект погружения, но этот атрибут должен поддерживаться Android 5.0 или более поздней версии. Более того, некоторые домашние машины имеют ограничения на строку состояния и не могут действовать, например система молотка , Строка состояния имеет полупрозрачный цвет, и этот атрибут не может действовать, поэтому этот эффект зависит от телефона и версии системы. Посмотрим, как это работает:
Да, так себе, но это почти готово, вам нужно установить эффект параллакса для картинки «фон», и текст заголовка отображается внизу по центру. Установка эффекта параллакса для изображения «фон» может быть выполнена путем установки свойства app: layout_collapseMode, если это свойство является дочерним элементом управления CollapsingToolbarLayout, есть три значения: none, pin, parallax. Эффект параллакса заключается в том, что при свертывании CollapsingToolbarLayout этот макет (или элемент управления) будет иметь эффект складывания параллакса; эффект закрепления заключается в том, что после свертывания CollapsingToolbarLayout этот макет (или элемент управления) будет зафиксирован вверху. «Нет» является значением по умолчанию, то есть не имеет никакого эффекта. Если честно, я чувствую, что нет никакой разницы между «pin» и «none» (если вы считаете, что я ошибаюсь, пожалуйста, просветите меня). Что касается положения заголовка, его можно настроить с помощью app: collapsedTitleGravity и app: collapsedTitleGravity. Используется так же, как layout_gravity, поэтому я не буду об этом говорить. Вставьте код и просто посмотрите на эффект.
Источник
Android AppBarLayout And Toolbar Example
android.support.design.widget.AppBarLayout is used to wrap android.support.v7.widget.Toolbar component. It can make the Toolbar avoid being overlapped by ListView or RecyclerView controls in the screen.
1. How To Control Android App Toolbar Show / Hide Behavior.
- Wrapped by AppBarLayout, the Toolbar will be hidden when the user scrolls RecyclerView down, and it will be shown again when the user scrolls RecyclerView up. You can set the behavior by configuring Toolbar‘s app:layout_scrollFlag property value as below.
- The Toolbar property app:layout_scrollFlags‘s value can be followings.
- scroll: Scroll means when the RecyclerView scrolls up, the Toolbar will scroll up also and be hidden.
- snap: Snap indicates that when Toolbar is not fully hidden or displayed, it will automatically select whether it is hidden or displayed on the basis of the current rolling distance.
- enterAlways: This means when RecyclerView scrolls down, the Toolbar will scroll down and display again.
2. Scroll RecyclerView To Show / Hide Toolbar Example.
-
- In this example, there is a Toolbar and a RecyclerView on the screen. The Toolbar contains two menu items Add and Delete. The RecyclerView use LinearLayoutManager to list some car image and text.
- When clicking the Add menu item, it will add a car to the list randomly, when clicking the Delete menu item, it will automatically delete a car in the list also.
Below is the screen without use AppBarLayout to wrap Toolbar.
If you can not watch the above video, you can see it on the youtube URL https://youtu.be/FRkDIDS05MI
Below is the screen that uses AppBarLayout to wrap the Toolbar component.
Источник