- Android: как скрыть ActionBar при определенных действиях
- ОТВЕТЫ
- Ответ 1
- Ответ 2
- Ответ 3
- Ответ 4
- Ответ 5
- Ответ 6
- Ответ 7
- Ответ 8
- Ответ 9
- Ответ 10
- Ответ 11
- Ответ 12
- ActionBar (Панель действий)
- Немного теории
- Прячем и показываем ActionBar
- Переводим ActionBar на следующий уровень
- Темы и стили для приложения
- Получение готового содержания
- Показываем\скрываем ActionBar
- Как показать и скрыть ActionBar с помощью AppCompat v.7
Android: как скрыть ActionBar при определенных действиях
Я разработал простое демо-приложение с заставкой экрана и некоторые обычные экраны.
У меня есть панель действий наверху, которая содержит логотип. Все это прекрасно выглядит на моем телефоне (Galaxy s1 I9000 V2.3), но когда я тестирую его на Galaxy s2 v4, панель действий появляется также в заставке и на экране карты.
Активность спалса и карты даже не наследуется от ActionBarActivity, так как это возможно и как я могу заставить его уйти?
Определение MapActivity (оно длинное, поэтому я включил только определение):
ОТВЕТЫ
Ответ 1
Примените следующее в своей теме для Activity в AndroidManifest.xml :
Это должно сделать трюк.
Ответ 2
Поскольку вы спрашиваете о том, как спрятаться в определенном упражнении, это то, что вам нужно:
Ответ 3
1. Вернитесь к своему файлу manifest.xml .
2. Find activity tag , для которого вы хотите скрыть свой ActionBar, а затем add ,
Android: тема = «@стиль/Theme.AppCompat.NoActionBar»
Ответ 4
Если вы хотите получить полный экран без действийBar и Title.
Добавьте его в style.xml
и используйте стиль при активности manifest.xml.
Ответ 5
ActionBar обычно существует вдоль Fragments , поэтому из Activity вы можете скрыть его
и из Fragment вы можете сделать это
Ответ 6
Если вы используете Theme.AppCompat.Light, лучшим эквивалентом будет Theme.AppCompat.Light.NoActionBar.
Я обнаружил, что использование Theme.AppCompat.NoTitleBar заставило мой текст кнопки быть невидимым, поэтому я использую Theme.AppCompat.Light.NoActionBar.
Ответ 7
Вы можете использовать режим низкого профиля Смотрите здесь
Просто найдите SYSTEM_UI_FLAG_LOW_PROFILE , который также уменьшает навигационные кнопки, если они присутствуют на экране.
Ответ 8
Это работает для меня! Поместите это в свою деятельность в манифестах
Вы также можете сделать свою собственную тему в файле styles.xml следующим образом:
Надеюсь, это поможет.
Ответ 9
Вышеупомянутые ответы помогут в действии ActionBar. Чтобы добавить к нему, используйте следующий код, если вы используете экран заставки: Используйте это, прежде чем устанавливать представление содержимого:
Просто, чтобы уточнить, вот как вы это делаете:
Это сделает ваш экран полным экраном, т.е. удалит верхнюю панель, где вы увидите сетевую панель, и т.д.
Ответ 10
Примените следующее в своей Теме для Действия в AndroidManifest.xml:
Затем примените следующее в вашем стиле в style.xml
Ответ 11
Это работает в API 27
В файле styles.xml замените код на следующий.
Затем в файлы (например, activity_list.xml), в которых вы хотите иметь панель инструментов, поместите следующий код.
Если у вас есть проблемы, переключитесь на линейную разметку (потому что именно на этом тестируется этот код)
Ответ 12
Начиная с Android 3.0 (уровень API 11), все действия, использующие тему по умолчанию, имеют панель действий в качестве панели приложения. Тем не менее, функции панели приложений постепенно добавляются в родную панель действий в различных версиях Android. В результате нативный ActionBar ведет себя по-разному в зависимости от того, какую версию системы Android может использовать устройство. Напротив, самые последние функции добавляются в версию панели инструментов библиотеки поддержки и доступны на любом устройстве, которое может использовать библиотеку поддержки.
Поэтому одним из вариантов является полное отключение ActionBar (в файле app manifest.xml), а затем добавление панели инструментов на каждую страницу, для которой требуется ActionBar.
(перейдите по ссылке выше для пошагового объяснения)
Источник
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:
Вы вошли на сайт, как гость.
Необходимо зарегистрироваться, чтобы прочитать статью
Источник
Переводим ActionBar на следующий уровень
Еще в ноябре 2012 года, я написал сообщение в блоге озаглавленное как «ActionBar в движении». Эта статья в основном касалась методики того, как красиво и уникально оживить ваш ActionBar . Хотя я упомянул некоторые из возможностей применения данного эффекта, я никогда не имел времени, чтобы добавить данный вид анимации ActionBar к какому-либо из моих собственных приложений. Но я видел в Play Store приложение использовавшее его.
Будучи на Google I/O, я наконец нашел приложение, использующее в ActionBar технику анимации. Давайте будем честными, это буквально взорвало мой взгляд когда я в первый раз это увидел. Я влюбился в хороший, тонкий и чрезвычайно полезный анимационный эффект, и, вероятно, даже больше, чем в само приложение! Я уверен, вы знаете приложение о котором я говорю, так как оно было представлено во время Google I/O. Это приложение Play Music!
Последнее обновление Play Music (v5.0) претерпело полный редизайн и внешний вид страниц с описанием исполнителя и альбома. Если вы откроете такую страницу, то вы заметите, что ActionBar изначально невидим и наслаивается на большое изображение, описывающее исполнителя или альбом. Но как только вы начинаете прокручивать страницу вниз (если это возможно), то ActionBar постепенно проявляется. ActionBar оказывается полностью непрозрачным, когда изображение становится прокрученным за экран.
Вот два основных преимущества такой ActionBar анимации:
- Изысканный UI: анимация синхронизирована с элементом на который вы взаимодействуете и положительно оценивается пользователями, потому что заставляет их чувствовать себя естественно с вашим UI, которое реагирует на их действия. Затухание анимации является прямым следствием попиксельного состоянии прокрутки, а не однократно запущенной анимации.
- Использует преимущество реального состояния экрана: сохраняя UX платформы, такая модель позволяет пользователю сосредоточиться в первую очередь на содержании, а не на управлении. Используется как дополнение к красивому дизайну и может восприниматься как увлекательная игра в интерфейсе вашего приложения.
В этой статье я углублюсь в детали реализации методики, описанной в статье «ActionBar в движении», чтобы создать эффект аналогичный тому, который используется в приложении Play Music. Для того, чтобы лучше понять какие цели мы планируем достигнуть, вы можете взглянуть на скриншоты ниже или же загрузить пример приложения.
Темы и стили для приложения
Как вы можете легко заметить, для того чтобы воспроизвести такой эффект, ActionBar должен перекрывать содержимое экрана. Это делается с помощью XML-атрибута android:windowActionBarOverlay . Приведенный ниже код описывает определение темы, которую мы будем использовать:
values/themes.xml
Логично, что стиль ActionBar определен в values/styles.xml следующим образом:
values/styles.xml
В заключение, мы должны использовать данную тему, чтобы применить этот стиль к нашей Activity :
AndroidManifest.xml
Обратите внимание, что с помощью тем и стилей мы удаляем все потенциальные проблемы мерцания при запуске (см. «Правильно сделанный запуск Android-приложения» для получения дополнительной информации).
Получение готового содержания
Как я пояснил ранее, затухание ActionBar синхронизировано на попиксельным состоянии контейнера прокрутки. В этом примере мы просто будем использовать ScrollView как контейнер прокрутки. Одним из основных недостатков этого контейнера является то, что вы не можете зарегистрировать слушателя для того, чтобы получать уведомления, когда состояние прокрутки изменилось. Но это можно легко обойти, создав NotifyingScrollView унаследованный от оригинального ScrollView :
NotifyingScrollView.java
Теперь мы можем использовать этот новый контейнер прокрутки в нашем XML-макете:
layout/activity_home.xml
Показываем\скрываем ActionBar
Теперь большая часть нашего шаблона готова, и мы можем подключить все эти компоненты вместе. Используемый для ActionBar алгоритм достаточно прост и состоит только из расчета альфа-канала в зависимости от текущего пиксельного состояния нашего контейнера прокрутки NotifyingScrollView . Следует отметить, что эффективное расстояние прокрутки должно быть прикреплено на [0, image_height — actionbar_height] , чтобы избежать ошибочных значений, которые могут возникнуть из-за поведения полос контейнера прокрутки в Android:
HomeActivity.java
Как описано в статье «ActionBar в движении», этот вышеприведенный фрагмент кода не работает для pre-JELLY_BEAN_MR1 устройств. Действительно, ActionBar не обозначает себя недействительным, когда требуется, поскольку он не регистрирует себя в качестве обратного вызова для Drawable . Вы можете обойти эту проблему просто прикрепив следующие Callback в onCreate(Bundle) методе:
HomeActivity.java
Вы уже можете запустить код. Хотя результат выглядит также как и в анимации приложения Play Music, мы можем продолжить дорабатывать его, чтобы сделать ещё лучше.
Источник
Как показать и скрыть ActionBar с помощью AppCompat v.7
У меня есть простое приложение, которое отображает текст.
Приложение начинается с главного экрана с несколькими параметрами (например, с помощью кнопки информации, которая приводит к информации об этом приложении, кнопке просмотра, которая позволяет пользователю видеть все отдельные фрагменты текста, которые могут отображаться). Основная кнопка приводит к другому экрану, на котором отображается текст. Прокручивая влево и вправо, он может видеть разные фрагменты текста. Это основная цель приложения.
В настоящее время у меня есть ActionBar. My MainActivity.Java расширяет AppCompatActivity. Все в приложении находится в этом упражнении.
Теперь я хочу сделать так, чтобы ActionBar появился только в режиме «Просмотр», а не на экране запуска или «info» / «browse».
Возможно ли иметь ActionBar в одной части приложения и нет ActionBar в другой части приложения? (И держать все в одной деятельности?)
Я пытался сделать это безрезультатно. Если это возможно, что мне делать дальше?
До сих пор я пытался сделать следующее:
1) Создайте эту тему
И примените его к MainActivity …
…. После этого ActionBar все еще был там. (Это происходит из этого сообщения SO ( android: windowNoTitle не будет скрывать панель действий с помощью appcompat-v7 21.0.0 )
2) Еще одна попытка состояла в том, чтобы добавить это в onCreate.
Это произошло после изучения этой SO-почты: ( Как скрыть панель действий до создания активности, а затем снова показать ее? )
В действиях, в которых вы не хотите иметь панель действий, используйте тему, полученную из Theme.AppCompat.NoActionBar или Theme.AppCompat.Light.NoActionBar . Эта активность никогда не сможет отобразить панель действий, если вы не предоставите свой собственный через setSupportActionBar(Toolbar) .
В действиях, в которых вы хотите, чтобы панель действий использовала тему, полученную из Theme.AppCompat , Theme.AppCompat.Light или Theme.AppCompat.Light.DarkActionBar . Это позволит вам динамически скрывать или показывать панель действий в такой деятельности. Используя эти темы, вы не сможете предоставить свою собственную панель действий.
При работе с панелью действий appcompat-v7 вам нужно получить ее, вызвав getSupportActionBar() вместо getActionBar() .
Вы можете скрыть и показать ActionBar программно.
Это также можно сделать из фрагментов
Как отметил @RenniePet ,
Вы должны вызвать ((AppCompatActivity)getActivity()).getSupportActionBar() , если вы используете Toolbar в качестве ActionBar .
Расширьте свою активность как AppCompatActivity а затем используйте панель действий как: –
Удалите андроид в окне itemActionbar.just, как показано ниже:
Надеюсь, это может вам помочь.
AppCompatActivity имеет собственную встроенную панель инструментов. Вам не нужно использовать дополнительное определение панели инструментов в главном xml.
Просто позвоните getSupportActionBar (). Show ()
Надеюсь, это может быть решением. Он работал над моей системой:
Источник