Как скрыть bottom navigation bar android при прокрутке

Скрыть / показать bottomNavigationView на прокрутке

Мне нужно скрыть нижний вид навигации по прокрутке и показать вниз прокрутку. Как реализовать это? мой макет похож на этот

Я добавил скриншот обзора. Просьба проверить его.

5 ответов

ОБНОВИТЬ

Обновите последнюю версию библиотеки поддержки версии 28.0.0-alpha1 и добавьте только один атрибут в BottomNavigationView .

Примечание. — Ваш XML должен следовать структуре XML, приведенной ниже, в старом ответе.

СТАРЫЙ ОТВЕТ (все еще работает)

Для этого вам нужен вспомогательный класс. Это решение работает, как Google Material Design Guideline.

Создайте класс BottomNavigationViewBehavior

Для использования этого поведения вам необходимо использовать компоновщик макета.

Добавьте этот код в свою деятельность, которая содержит нижнюю навигацию.

Изображение при прокрутке вверх: —

Изображение при прокрутке вниз:

Обновленный ответ после последних обновлений библиотеки:

Скрытие BottomNavigationView при прокрутке теперь доступно только с одним флагом в макете! Начиная с версии 28.0.0-alpha1 или материала /androidX 1.0.0-alpha1 .

Я обновил свой проект, используя последний подход, так как версия теперь находится в стабильной версии кандидата версии «1.0.0-rc01» .

Новое доступное поведение из окна называется HideBottomViewOnScrollBehavior . Установите его в BottomNavigationView качестве app:layout_behavior=»@string/hide_bottom_view_on_scroll_behavior» как описано в последних документах.

Вот полный пример:

Как и при скрытии панели инструментов при прокрутке, вы должны убедиться, что контент — это класс, который поддерживает последнюю прокрутку, такую как RecyclerView и NestedScrollView .

Это гарантирует, что все работает, как показано в анимации по спецификации дизайна

PS: labelVisibilityMode — еще одно интересное дополнение, которое вы получаете бесплатно для labelVisibilityMode проблем с обновлением и подробно описано в технических характеристиках.

Источник

Скрыть / показать bottomNavigationView при прокрутке

Я должен скрыть Нижний навигационный вид на прокрутке вверх и показать на прокрутке вниз .how, чтобы реализовать это? мой макет выглядит так

Я приложил скриншот вида. Пожалуйста, проверьте это.

8 ответов

В iOS 11 searchBar скрывается при прокрутке tableView, если мы установили значение скрыть. как я могу скрыть searchBar, navigationBar и tabBar при прокрутке collectionView вверх ? И показать их все при прокрутке вниз ? Спасибо за помощь.

Я создал activity с BottomNavigationView, и он работает нормально. Но я не могу скрыть пункт меню. Я пробовал этот код. bottomNavigationView.getMenu().findItem(R.id.tab_email).setVisible (ложь); Я даже пытался позвонить bottomNavigationView.invalidate(); Все входные данные ценятся.

ОБНОВЛЕНИЕ Просто добавьте один атрибут в BottomNavigationView

Библиотека материалов AndroidX

Поддержка библиотеки версии 28.0.0 или higher version

Примечание :- Ваш XML должен следовать структуре XML, приведенной ниже в старом ответе.

Для этого вам нужен вспомогательный класс. Это решение работает как руководство по дизайну материалов Google.

Создайте класс BottomNavigationViewBehavior

Для использования этого поведения вам необходимо использовать макет cooradinator.

Добавьте этот код в действие, содержащее нижнюю навигацию..

Я пытаюсь использовать как AppBarLayout , так и BottomNavigationLayout в одном CoordinatorLayout , и у меня возникают трудности с сокрытием BottomNavigationLayout , как того требует материальное руководство . Я имею в виду что-то вроде этого:
Как Скрыть/показать вид при прокрутке up/down?

Как Скрыть/показать вид при прокрутке вверх/вниз android как Foodpanda приложение Я хочу Скрыть/показать вид (линейный или относительный макет), когда ScrollView находится вверх/вниз, как это показано выше gif. Но мое приложение я не использую Recyclerview или list view (просто textview). Как я.

Читайте также:  Nokia nfc android one

Изображение при прокрутке вверх :-

Изображение при прокрутке вниз:

Обновленный ответ после последних обновлений библиотеки :

Скрытие BottomNavigationView при прокрутке теперь доступно только с одним флагом в макете! Начиная с версии 28.0.0-alpha1 или материала/androidX 1.0.0-alpha1 .

Я обновил свой проект, используя последний подход, так как версия теперь является стабильным кандидатом на выпуск. Обновление: Используйте полностью выпущенную версию «1.0.0» !

Новое доступное поведение из коробки называется HideBottomViewOnScrollBehavior . Установите его на BottomNavigationView как app:layout_behavior=»@string/hide_bottom_view_on_scroll_behavior» , как описано в последних документах .

Вот полный пример:

Как и в случае со скрытием панели инструментов при прокрутке, вы должны убедиться, что содержимое является классом, поддерживающим последнюю прокрутку , например RecyclerView и NestedScrollView .

Это гарантирует, что все работает так, как показано в анимации на спецификации дизайна

PS: labelVisibilityMode -это еще одно классное дополнение, которое вы получаете бесплатно за то, что потрудились обновить, и это подробно описано в спецификациях дизайна .

  1. Обновите свой проект до Androidx, то есть рефакторинг > > миграция на androidx (минимальная версия Android studio 3.4)
  2. Используя файл Нижнего навигационного меню по умолчанию xml, замените макет родительского ограничения на макет координатора .
  3. Добавьте строку app:layout_behavior= » com.google.android.material.behavior.HideBottomViewOnScrollBehavior«

Просто используйте CoordinatorLayout в качестве родительского контейнера и добавьте app:layout_behavior в дочерний View и установите поведение @string/hide_bottom_view_on_scroll_behavior это решение.

внутри BottomAppBar как показано ниже:

Просто добавьте это в свой xml

Похожие вопросы:

Я хочу, чтобы мой нижний колонтитул отображался при прокрутке вниз и скрывался при прокрутке вверх и достижении дельты. Теперь он показывает, что с самого начала прокрутка вниз есть, а когда.

У меня есть экран, как показано на скриншоте ниже. У меня есть категория, состоящая из Vegetables, Fruits и Snacks, которая показана сверху с помощью представления карты. Теперь я хочу скрыть эту.

мое приложение имеет 3 фрагмента, которые раздуваются от mainActivity до BottomNavigationView. Один из фрагментов использует RecyclerView и прокручивается, с BottomNavigationView последний элемент в.

В iOS 11 searchBar скрывается при прокрутке tableView, если мы установили значение скрыть. как я могу скрыть searchBar, navigationBar и tabBar при прокрутке collectionView вверх ? И показать их все.

Я создал activity с BottomNavigationView, и он работает нормально. Но я не могу скрыть пункт меню. Я пробовал этот код. bottomNavigationView.getMenu().findItem(R.id.tab_email).setVisible (ложь); Я.

Я пытаюсь использовать как AppBarLayout , так и BottomNavigationLayout в одном CoordinatorLayout , и у меня возникают трудности с сокрытием BottomNavigationLayout , как того требует материальное.

Как Скрыть/показать вид при прокрутке вверх/вниз android как Foodpanda приложение Я хочу Скрыть/показать вид (линейный или относительный макет), когда ScrollView находится вверх/вниз, как это.

Я новичок в MacOS , я хочу показать индикатор скроллера в NSTableview при прокрутке, скрыть, когда он не прокручивается. Я думаю получить делегат NSScroller, чтобы я мог обнаружить, когда он.

У меня много проблем с прокруткой и обнаружением его внутри фрагментов с использованием coordinatorLayout в Android. У меня есть MainActivity, который содержит 3 фрагмента. В одном из этих.

Я разрабатываю приложение android, в котором был определен следующий макет для отображения верхнего вида навигации, ящика и нижнего вида навигации. Однако я не могу скрыть свой bottomnavigationview.

Источник

Реализация BottomAppBar. Часть 3: Поведения для Android

BottomAppBar — это один из новых Android Material компонентов, которые были представлены на Google I/O 2018. Благодаря перемещению Navigation Drawer и меню приложения в нижнюю часть экрана, BottomAppBar радикально меняет внешний вид Android приложений.

Читайте также:  Что такое исходники ядра android

В первой и второй частях нашей серии статей про BottomAppBar мы познакомились с BottomAppBar и обсудили его атрибуты. Также мы объяснили, как реализовать Navigation Drawer и меню приложения в рамках BottomAppBar.

Поведение

Согласно Material Design, компоненты приложения не являются статичными. Они могут перемещаться или трансформироваться, т.е. иметь какое-то поведение. Material Design также формирует некие рамки для такого поведения. В этой статье мы обсудим детали реализации рекомендуемого поведения для BottomAppBar, которое представлено на странице гайдлайнов для BottomAppBar.

Макет

Первый гайдлайн описывает макет BottomAppBar. Вот что предлагается:

Для разных по смыслу экранов приложения, можно изменять макет и набор пунктов меню в BottomAppBar. Например, можно отображать больше или меньше пунктов меню в зависимости от того, что лучше всего подходит для конкретного экрана.

Основываясь на этом гайдлайне, на главных экранах рекомендуется использовать макет BottomAppBar, показывающий несколько пунктов в меню и центрированную FAB (Floating Action Button). На второстепенных экранах, переход на которые осуществляется с главных, макет BottomAppBar должен состоять из выровненной по правому краю FAB и нескольких дополнительных пунктов в меню. Переходы между этими двумя экранами должны выполняться надлежащим образом. Gif сверху демонстрирует этот гайдлайн.

Теперь давайте посмотрим, как можно реализовать это поведение. У нас есть два xml-файла в папке res/menu для меню каждого экрана:

Когда происходит переход между экранами, например, по нажатию кнопки TOGGLE SCREEN в нашем случае, макет BottomAppBar, включая меню и FAB, должен измениться. Вот базовый код для такого поведения макета BottomAppBar:

Если вы хотите сделать анимированные переходы, нужен дополнительный код. Вы можете изучить исходный код, прикреплённый в конце этой статьи, в котором найдёте анимацию.

Скроллирование

Скроллирование — важный триггер поведения для таких компонентов, как BottomAppBar. На странице гайдлайнов Material Design рекомендуется следующее поведение для этого случая:

При скроллировании BottomAppBar может появиться или исчезнуть:
— Скроллирование вниз скрывает BottomAppBar. Если на нём была FAB, она отсоединяется от панели и остается на экране.
— Скроллирование вверх показывает BottomAppBar и снова присоединяет его к FAB, если она там была.

Ниже приведена демонстрация поведения BottomAppBar при скроллировании.

Чтобы использовать это поведение, BottomAppBar и FAB должны быть прямыми дочерними элементами CoordinatorLayout. Затем мы включаем hideOnScroll и устанавливаем флаги скроллирования для BottomAppBar:

Этого вполне достаточно для реализации такого поведения BottomAppBar.

Возвышение

У каждого компонента в мире Material Design есть возвышение, аналогичное нашему физическому миру. У BottomAppBar возвышение — 8dp, а само содержимое экрана возвышается на 0dp. FAB в статичном состоянии возвышается на 12dp. Два компонента, которые мы ещё вспомним в этой статье, Navigation Drawer и Snackbar, возвышаются на 16dp и 6dp соответственно.

Как правило, Snackbar — это компонент для уведомления пользователя, выскакивающий из нижней части экрана. Но если на экране есть BottomAppBar или Navigation Drawer, поведение Snackbar должно измениться. В этих случаях Snackbar следует показывать над нижними компонентами. Вот демонстрация и соответствующий код для реализации:

Как мы уже упоминали, Navigation Drawer возвышается на 16dp, что означает — согласно гайдлайну —

Меню, выпадающие из BottomAppBar (например, Navigation Drawer), открываются как модальные окна на уровень выше, чем сам BottomAppBar.

Ниже приведена реализация нашего Navigation Drawer:

Navigation Drawer является модальным окном и поэтому следует приведённому выше правилу реализации.

Читайте также:  Отключить блокировку экрана андроид хуавей

Детали реализации этого поведения выглядят следующим образом. В папке res/menu должен быть создан xml-файл меню для Navigation View, который будет использован в Navigation Drawer:

Затем должен быть создан файл макета для фрагмента, использующего Navigation Drawer:

Этот файл макета содержит Navigation View и другие компоненты, формирующие макет для Navigation Drawer. Чтобы создать этот макет, нам нужен класс фрагмента, расширяющий BottomSheetDialogFragment:

При клике по значку Navigation Drawer создаётся экземпляр этого фрагмента, который показывается в виде модального окна:

Это статья завершает нашу серию статей про BottomAppBar. Найти исходный код этой статьи вы можете на Github. Комментируйте и задавайте вопросы.

Источник

Как динамически скрыть пункт меню в BottomNavigationView?

Я хочу скрыть пункт меню BottomNavigationView динамически в зависимости от некоторых условий. Я попробовал следующее, но это не работает.

9 ответов

removeItem делает свое дело. Не уверен, почему метод setVisible не работает.

Я попробовал большинство решений, но это сработало для меня,

Для динамического сокрытия предмета: bottomNavigationView.findViewById(R.id.xyz).setVisibility(View.GONE);

Для того, чтобы сделать предмет видимым: bottomNavigationView.findViewById(R.id.xyz).setVisibility(View.VISIBLE);

В моем случае я хотел скрыть текст панели инструментов и значки / заголовки элементов BottomNavigationView во фрагменте авторизации, который обрабатывает первоначальную загрузку моего приложения. Когда он определяет, что пользователь прошел проверку подлинности и выбирает его профиль из базы данных, я загружаю фрагмент канала, который выбирает данные из базы данных и отображает их для пользователя. Я добавил следующий метод к действию, который создает элементы макета и вызывает его из его фрагментов, передавая логическое значение для определения видимости элементов.

Мы объявляем массив идентификаторов для рисования и массив идентификаторов заголовков в соответствии с тем, что мы объявили в XML-файле меню. Если true, мы перебираем пункты меню и устанавливаем для их значка, заголовка и их состояния значения по умолчанию. Если значение равно false, мы устанавливаем значок на прозрачный значок (удаление значка влияет на его размер), задаем для заголовка панели инструментов пустую строку и отключаем ее.

Меню BottomNavigationView:

Пустой значок (ic_empty.xml):

Пустой заголовок (title_empty):

У меня в kotlin это работает так:

Но дело в том, что если вы щелкнете по другому элементу, скрытый элемент появится снова, потому что нижняя панель перезагрузит свой внешний вид, когда покажет вам активный элемент (поэтому, если в вашем меню XML, его видимый, появится снова видимым (я думаю, чтобы у меня так бывает))

RemoveItem смещает элементы меню на панели, когда элемент (ы) скрыт. Я нашел немного лучший способ. Создайте группу пунктов меню, которые вы хотели бы скрыть в своем меню xml.

В вашем bottom_menu.xml

И в твоей деятельности.

Хотя с этой настройкой, когда все пункты меню видны, проверенное состояние изменения пунктов меню выходит из строя. Также попытался программно добавить пункты меню в пустую группу, но группа перестала отвечать на GroupDisable .

Вы можете скрыть пункт меню, установив isVisible как false , используя предложенное свойство isVisible в Kotlin . Но из-за этого ваш пункт меню будет удален из BottomNavigationView на Android 9 .

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

SetVisibility должен работать для вас. К вашему сведению, ниже пример в котлин.

. NavView.getMenu ( ) FindItem ( ) SetVisible (истина ) . . NavView.getMenu ( ) FindItem ( ) SetVisible (ложь ) .

В Kotlin вы можете использовать эту строку кода:

Источник

Оцените статью