- Different Ways to Hide ActionBar in Android with Examples
- Different ways to Hide ActionBar
- 1. Hide ActionBar from the entire App using styles.xml
- Android: как скрыть ActionBar при определенных действиях
- ОТВЕТЫ
- Ответ 1
- Ответ 2
- Ответ 3
- Ответ 4
- Ответ 5
- Ответ 6
- Ответ 7
- Ответ 8
- Ответ 9
- Ответ 10
- Ответ 11
- Ответ 12
- Как скрыть пункт меню в actionbar?
- 20 ответов
- скрыть кнопку по умолчанию в меню xml
- показать кнопку в коде
- см. также
- Как скрыть пункт меню на панели действий?
- Скрыть кнопку по умолчанию в меню xml
- Показать кнопку в коде
- Смотрите также
Different Ways to Hide ActionBar in Android with Examples
ActionBar is a primary toolbar within the activity that may display the activity title, application-level navigation affordances, and other interactive items. Although, Action Bar is an important feature for android applications, sometimes we have the need to hide it in either the entire app, or some particular activity, or during some particular work. This article explains and demonstrates various ways to hide the ActionBar in an Android Application. There are various ways to hide Action Bar, demonstrated below:
Different ways to Hide ActionBar
1. Hide ActionBar from the entire App using styles.xml
If you want to hide Action Bar from the entire application (from all Activities and fragments), then you can use this method. Just go to res -> values -> styles.xml and change the base application to “Theme.AppCompat.Light.NoActionBar“.
Below is the code snippet for this method and changes are made to styles.xml:
Attention reader! Don’t stop learning now. Get hold of all the important Java Foundation and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more, please refer Complete Interview Preparation Course.
Источник
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?
У меня есть панель действий с меню. Как Скрыть / показать этот пункт меню?
вот что я пытаюсь сделать:
20 ответов
получить MenuItem указывая на такой элемент, вызовите setVisible на него, чтобы настроить его видимость, а затем вызвать invalidateOptionsMenu() на вашей деятельности, поэтому меню ActionBar настраивается соответствующим образом.
обновление: A MenuItem не является обычным видом, который является частью вашего макета. Это что-то особенное, совершенно другое. Ваш код возвращает null на item и это вызывает аварию. Вместо этого вам нужно сделать:
вот последовательность : первый звонок invalidateOptionsMenu() и onCreateOptionsMenu(Menu) получить ссылку на MenuItem (по телефону menu.findItem() ) и вызов setVisible() на
нашел добавление к этому вопросу:
Если вы хотите изменить видимость пунктов меню на ходу, вам просто нужно установить переменную-член в своей деятельности помнить, что вы хотите скрыть меню и вызов invalidateOptionsMenu() и скрыть элементы в вашем переопределенном onCreateOptionsMenu(. ) метод.
В моем примере я спрятал все предметы.
- вы можете установить флаг/состояние.
- вызов invalidateOptionsMenu() когда вы хотите скрыть. Это вызовет onCreateOptionsMenu() .
- на onCreateOptionsMenu() , проверите для флага / условия и покажите или спрячьте его следующим образом:
вы можете назвать это:
обновление:
убедитесь, что ваш код не возвращает null на item или это может привести к сбою приложения.
Я искал ответ с немного большим контекстом. Теперь, когда я понял это, я добавлю этот ответ.
скрыть кнопку по умолчанию в меню xml
по умолчанию кнопка share будет скрыта, как установлено android:visible=»false» .
показать кнопку в коде
но кнопка share может дополнительно отображаться на основе некоторых состояние.
см. также
- настройка Панели приложений (Android docs для получения помощи в настройке панели приложений / действий)
не работает для меня. Я должен был явно использовать onPrepareOptionsMenu чтобы установить невидимый элемент.
чтобы использовать onCreateOptionsMenu для создания меню и onPrepareOptionsMenu изменить видимость etc.
это сработало для меня как от активности, так и от фрагмента
первоначально установите видимость пункта меню в false в файле макета меню следующим образом:
затем вы можете просто установить видимость пункта меню в false в вашем onCreateOptionsMenu () после раздувания меню.
p1r4nh4 ответ работает нормально, я просто упростил его, используя логический флаг:
задайте значение переменной и вызовите invalidateOptionsMenu ();
согласно официальному сайту разработчика Android, OnCreateOptionMenu (меню) не рекомендуется для изменения пунктов меню или значков, видимости..и т. д. Во время выполнения.
после того, как система вызывает onCreateOptionsMenu (), она сохраняет экземпляр меню, которое вы заполняете, и не будет вызывать onCreateOptionsMenu () снова, если меню не является недействительным по какой-либо причине. Однако вы должны использовать onCreateOptionsMenu () только для создания начального состояния меню, а не для создания изменения в жизненном цикле деятельности.
Если вы хотите изменить меню параметров на основе событий, происходящих в течение жизненного цикла действия, вы можете сделать это в методе onPrepareOptionsMenu (). Этот метод передает объект меню в существующем виде, чтобы его можно было изменить, например добавить, удалить или отключить элементы. (Фрагменты также предоставляют обратный вызов onPrepareOptionsMenu ().) —Официальный Сайт AndroidDeveloper —
Как порекомендовано вы можете используйте это onOptionsItemSelected (пункт меню) метод отслеживания пользовательских входов.
Если вам нужно изменить пункты меню во время выполнения, вы можете использовать onPrepareOptionsMenu(меню) изменить их
- ActivityCompat.invalidateOptionsMenu() не вызывает обратный вызов onPrepareOptionsMenu (); он просто обновляет меню напрямую.
- мой someMethod () вызывается из нескольких мест, даже до onCreateOptionsMenu(), так что я должен проверить мрнению != недействительный.
- должен работать с использованием API 8
ActivityCompat.invalidateOptionsMenu() не вызывает обратный вызов onPrepareOptionsMenu (); он просто обновляет меню напрямую.
мой someMethod () вызывается из нескольких мест, даже до onCreateOptionsMenu(), так что я должен проверить мрнению != недействительный.
можно использовать toolbar.getMenu().clear(); скрыть все пункты меню одновременно
Если вы сделали все, как в приведенных выше ответах, но элемент меню все еще виден, проверьте, что вы ссылаетесь на уникальный ресурсов. Например, в onCreateOptionsMenu или onPrepareOptionsMenu
Ctrl + щелчок R. id.menu_open и убедитесь, что он существует только в одном файле меню. В случае, если этот ресурс уже используется в любом месте и загружен в действие, он попытается спрятаться там.
этот код работал для меня
для тех, кто использует библиотеку Appcompat: Если ваша активность подклассов ActionBarActivity, вы можете вызвать supportInvalidateOptionsMenu ()
Я думаю, что лучшим подходом было бы использовать переменную-член для меню, инициализировать его в onCreateOptionsMenu() и просто использовать setVisible() после этого, не делая недействительным меню опций.
лучший способ скрыть все элементы в меню с помощью одной команды-использовать» group » в меню xml. Просто добавьте все пункты меню, которые будут в вашем меню переполнения внутри той же группы.
в этом примере у нас есть два пункта меню, которые всегда будут отображаться (обычный пункт и поиск) и три пункта переполнения:
затем, в вашей деятельности (предпочтительно в onCreateOptionsMenu), используйте команду setGroupVisible, чтобы установить видимость всех пунктов меню в false или истинный.
Если вы хотите использовать эту команду где-либо еще в своей деятельности, обязательно сохраните класс меню в local и всегда проверяйте, если menu равно null, потому что вы можете выполнить перед createOptionsMenu:
установив видимость всех элементов в меню, меню приложения или меню будет скрываться автоматически
перед переходом к другому фрагменту используйте код ниже:
Источник
Как скрыть пункт меню на панели действий?
У меня есть панель действий с элементом меню. Как я могу скрыть / показать этот пункт меню?
Это то, что я пытаюсь сделать:
Обновление: MenuItem не является обычным видом, который является частью вашего макета. Это нечто особенное, совершенно другое. Ваш код возвращает null для item и это приводит к сбою. Вместо этого вам нужно сделать следующее:
Вот последовательность: первый вызов invalidateOptionsMenu() а затем внутри onCreateOptionsMenu(Menu) получить ссылку на MenuItem (вызывая menu.findItem() ) и вызывать setVisible() на нем
Нашел добавление к этому вопросу:
Если вы хотите изменить видимость ваших пунктов меню в пути, вам просто нужно установить переменную-член в своей деятельности, чтобы помнить, что вы хотите скрыть это меню и вызвать invalidateOptionsMenu() и скрыть элементы в вашем переопределенном onCreateOptionsMenu(. ) Метод.
В моем примере я спрятал все предметы.
- Вы можете установить флаг / условие.
- Вызов invalidateOptionsMenu() если вы хотите скрыть эту опцию. Это вызовет onCreateOptionsMenu() .
- В onCreateOptionsMenu() проверьте флаг / условие и покажите или скройте его следующим образом:
Вы можете назвать это:
Обновить:
Убедитесь, что ваш код не возвращает значение null для item или может привести к сбою приложения.
Не работал для меня. Мне пришлось явно использовать onPrepareOptionsMenu чтобы установить элемент невидимым.
Поэтому используйте onCreateOptionsMenu для создания меню и onPrepareOptionsMenu для изменения видимости и т. Д.
Я искал ответ с небольшим контекстом. Теперь, когда я это выяснил, я добавлю этот ответ.
Скрыть кнопку по умолчанию в меню xml
По умолчанию кнопка совместного доступа будет скрыта, как установлено android:visible=»false» .
Показать кнопку в коде
Но кнопка совместного доступа может быть необязательно показана на основе некоторых условий.
Смотрите также
- Настройка панели приложений (Android-документы для получения информации о настройке приложения / панели действий)
Ответ P1r4nh4 отлично работает, я просто упростил его с помощью логического флага:
Вы можете просто установить видимость пункта меню на false в вашем onCreateOptionsMenu () после раздувания меню.
Это работало для меня как из Activity, так и для Fragment
Установить значение переменной и вызвать invalidateOptionsMenu ();
- ActivityCompat.invalidateOptionsMenu () не вызывает обратный вызовPrepareOptionsMenu (); Он просто обновляет меню напрямую.
- Мой someMethod () вызывается из нескольких мест, даже до onCreateOptionsMenu (), поэтому я должен проверить mMenu! = Null.
- Должен работать с использованием API 8
ActivityCompat.invalidateOptionsMenu () не вызывает обратный вызовPrepareOptionsMenu (); Он просто обновляет меню напрямую.
Мой someMethod () вызывается из нескольких мест, даже до onCreateOptionsMenu (), поэтому я должен проверить mMenu! = Null.
Вы можете использовать toolbar.getMenu().clear(); Скрыть сразу все пункты меню
Если вы сделали все, как в приведенных выше ответах, но элемент меню все еще отображается, убедитесь, что вы ссылаетесь на уникальный ресурс. Например, в onCreateOptionsMenu или onPrepareOptionsMenu
Ctrl + Нажмите R.id.menu_open и убедитесь, что он существует только в одном файле меню. Если этот ресурс уже используется в любом месте и загружен в действие, он попытается скрыть его.
Для тех, кто использует библиотеку Appcompat: если подклассы Activity ActionBarActivity вы можете вызвать supportInvalidateOptionsMenu ()
Я думаю, что лучшим подходом было бы использовать переменную-член для меню, инициализировать ее в onCreateOptionsMenu () и просто использовать setVisible () после этого, не отменяя меню опций.
Лучший способ скрыть все элементы в меню только одной командой – использовать «группу» в вашем меню xml. Просто добавьте все пункты меню, которые будут в вашем меню переполнения внутри одной группы.
В этом примере у нас есть два пункта меню, которые всегда будут отображаться (обычный элемент и поиск) и три элемента переполнения:
Затем, в свою активность (желательно на onCreateOptionsMenu), используйте команду setGroupVisible, чтобы установить видимость всех элементов меню на false или true.
Если вы хотите использовать эту команду где-нибудь еще в своей деятельности, обязательно сохраните класс меню на локальном компьютере и всегда проверяйте, является ли меню нулевым, потому что вы можете выполнить до createOptionsMenu:
Источник