Android windownotitle не работает

Обновлено: 19.09.2024

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

21 ответ

Перейдите в styles.xml и измените .DarkActionBar на .NoActionBar

Если цвета не имеют отношения к вашему приложению, вы действительно можете пойти на

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

В файле манифеста Change:

Хотя это работает, редактирование файла styles.xml может быть лучшим вариантом для большинства, так как при использовании этого метода игнорируются любые значения, которые могли быть установлены в AppTheme в styles.xml . Приведенное ниже решение, которое заменяет родительский класс на NoActionBar в styles.xml сохраняет любую ранее NoActionBar информацию о стиле, которая была настроена.

работает в onCreate() , когда помещается перед вызовом setContentView() .

в противном случае он выйдет из строя

Это приводит к сбою приложения. Я поставил линию между super.onCreate. и setContentView. И он падает Это не правильный способ сделать это. Мистер Торрес хорошо это объяснил.

В файле styles.xml измените DarkActionBar на NoActionBar

Это рабочий код для скрытия панели самой программой. Может быть помещен в конструктор onCreate(. ) после super.onCreate(..) и setContentView(. ) чтобы скрыть панель сразу после запуска программы.

Это работало для меня в values/styles.xml добавлении элементов:

Это работает для меня

В файле манифеста измените на это:

вы можете изменить name= "---------"

find android: theme = "@style/AppTheme" изменить на android: theme = "@style/no_title"

нажмите кнопку "Тема" на панели меню (зеленый цвет рядом с MainActivity)

  • нажмите кнопку "Проект"
  • щелкните no_title (с правой стороны)
  • нажмите "ОК"

удалить из Activity_main.xml следующее:

in onCreate() работает!

сделайте это в файле манифеста:

это переключает меня на старый дизайн Android (черный фон, текстовые поля с желтыми рамками . ) Вы можете использовать это для легкой темы: android: theme = "@style/Theme.AppCompat.Light.Nostyle / Theme.AppCompat.Light.NoActionBar">

Это работает для меня, я надеюсь, что это работает и для вас

Самый простой способ: Просто дважды нажмите эту кнопку и выберите "NoTitleBar";)

Просто используйте setTitle(null) выше

Название исчезнет, ​​тогда вы можете использовать логотип по своему выбору.

Для начинающих, как я. Просто делай то, что я говорю. Из твоего Android Project.

app → res → values → style.xml

заменить этот код

Попробуйте изменить стили на NoActionBar, если это не сработает, добавьте этот код в основное занятие

тогда я не могу скрыть ActionBar с помощью следующего стиля, который работал раньше.

Я настроил его на конкретную деятельность.

Когда я использую версию appcompat-v7 20.0.0, actionbar будет скрыт, как и предполагалось.

Как скрыть панель действий с пользовательским стилем с помощью библиотеки AppCompat версии 21?

2 ответа

Я хочу использовать Material design в under-Lolipop версии Android. Я знаю, Я должен использовать AppTheme : Appcompat-v7 Чтобы использовать Actionbar с Appcompat-v7, я должен расширить ActionbarActivity Но я не хочу использовать ActionbarActivity из- за довольно большой разницы в активности, и.

Я обновляю свое приложение, чтобы обеспечить поддержку материальной темы(мое приложение использует Google Play Services) Когда я синхронизирую свой проект, это появляется: . \app\build\intermediates\exploded-aar\com.google.android.gms\play-services\6.1.11\res\values\wallet_colors.xml.

@Chk0nDanger ваш ответ верен, но вы должны использовать приведенный ниже код :

без родительского элемента все будет белого цвета ( textviews , buttons , chekcboxs и т. Д.)!

в вашем файле manifest.xml :

обновлено в 2015 году 29 июля

убедитесь, что android:windowNoTitle должен быть заменен на windowNoTitle при обновлении до AppCompat v22.1.0

Хорошо, я нашел ответ.

В appcompat-v7 есть тема Theme.AppCompat.NoActionBar:21.0.0. Он определяется следующим образом.

В атрибуте windowActionBar нет префикса android .

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

Немного предыстории: я добавляю поддержку планшетов для игры, которая ранее была доступна на телефонах в течение длительного времени. Некоторые действия составляют “wizard”, где пользователь.

Мое приложение рушится в ту же минуту, как я запускаю его после того, как я изменил свой AppCompat-v7 на 21.0.0 и скомпилировал без проблем. Это дает мне ошибку: java.lang.NullPointerException.

При попытке использовать последнюю библиотеку поддержки appcompat-v7 в моем проекте я получаю следующую ошибку.

Я хочу использовать Material design в under-Lolipop версии Android. Я знаю, Я должен использовать AppTheme : Appcompat-v7 Чтобы использовать Actionbar с Appcompat-v7, я должен расширить.

Я обновляю свое приложение, чтобы обеспечить поддержку материальной темы(мое приложение использует Google Play Services) Когда я синхронизирую свой проект, это появляется.

Есть ли способ сделать ActionBar прозрачным в Material Design через Appcompat-v7 21? К сожалению, это не работает. <item name=colorPrimary>@android:color/transparent</item> Тоже не.

Я обновил свой проект, чтобы использовать последнюю библиотеку поддержки appcompat, новая версия использует флажки material design и переключатели. Мое приложение имеет темную тематику, а флажки.

Я решил перейти с ActionBarSherlock (ABS) на AppCompat-v7. Я столкнулся с проблемой. ActionBar стал размером 56dp вместо 48dp, как это было в теме Holo. Как я обнаружил в AppCompat resources, размер.

Я хотел знать разницу между android-support-v4.jar и android-support-v7-appcompat.jar . Если я хочу добавить панель действий appcompat в свое приложение, мне нужно добавить как.

Получил вышеприведенную ошибку после загрузки L preview release version в Android Studio , когда мой проект имел minSdkVersion 19. Кроме того, при установке mindSdkVersion , как показано ниже.

Как сделать активность в полноэкранном режиме? Я имею в виду без панели уведомлений. Есть идеи?

вы можете сделать это программно:

или вы можете сделать это через свой AndroidManifest.xml file:

Edit:

если вы используете AppCompatActivity, то вам нужно установить тему, как показано ниже

Immersive Full-Screen Mode Demo

есть техника под названием Захватывающий Полноэкранный Режим в наличии KitKat.

пример

если вы не хотите использовать тему @android:style/Theme.NoTitleBar.Fullscreen потому что вы уже используете собственную тему, вы можете использовать android:windowFullscreen .

В AndroidManifest.XML-код:

в стилях.XML-код:

на AndroidManifest.xml file:

или Java код:

Если вы используете AppCompat и ActionBarActivity, то используйте это

getSupportActionBar().hide();

будьте осторожны с

Если вы используете какой-либо метод, чтобы установить панель действий следующим образом:

это вызовет исключение нулевого указателя.

попробуйте это с appcompat от style.xml . Он может поддерживать все платформы.

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

для тех, кто использует AppCompact. стиль.xml

затем поместите имя в манифест.

спасибо за ответ @Cristian я получал ошибку

android.утиль.AndroidRuntimeException: requestFeature () должен быть вызван перед добавлением контента

Я решил это с помощью

сначала вы должны установить вам тему приложения с "NoActionBar", как показано ниже

затем добавьте эти строки в свой полноэкранный режим.

он скроет панель действий / панель инструментов, а также строку состояния в полноэкранном режиме

I. ваша главная тема приложения -тема.Совместимости приложений.Свет.DarkActionBar

для скрытия ActionBar / StatusBar
стиль.xml

для скрыть панель навигации системы

второй. Ваша главная тема приложение тема.Совместимости приложений.Свет.NoActionBar

для скрытия панели действий / Строка состояния
стиль.xml

для скрыть панель навигации системы

как как Theme.AppCompat.Light.DarkActionBar .

демо
Надеюсь, это поможет

совет: использование getWindow ().setLayout() может испортить ваш полноэкранный дисплей! Примечание в документации на этот метод говорит:

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

для моих целей, я обнаружил, что я должен был использовать setLayout с абсолютными параметрами для правильного изменения размера моего полноэкранного окна. Большую часть времени, это работало нормально. Он был вызван событием onConfigurationChanged (). Однако тут возникла икота. Если пользователь вышел из приложения, изменил ориентацию и вернулся, это приведет к запуску моего кода, который включал setLayout(). Во время этого окна времени повторного входа моя строка состояния (которая была скрыта манифестом) будет повторно отображаться, но в любое другое время setLayout() не вызовет этого! Решение состояло в том, чтобы добавить дополнительный вызов setLayout () после одного с жесткими значениями, такими как:

затем окно было правильно изменено, и строка состояния не появлялась снова независимо от события, которое вызвало это.

показать полное погружение:

выход из режима полного погружения:

вот пример кода. Вы можете включить/выключить флаги, чтобы скрыть/показать определенные части.

затем вы сбрасываете в по умолчанию состояние:

вы можете вызвать вышеуказанные функции из вашего onCreate :

С Котлином так я и сделал:

Полноэкранный Режим

режим погружения предназначен для приложений, в которых пользователь будет сильно взаимодействовать с экраном. Примерами являются игры, просмотр изображений в галерее или чтение содержимого с разбиением на страницы, например книги или слайдов в презентации. Для этого просто добавьте следующие строки:

Sticky immersive

в обычном режиме погружения, в любое время пользователь проводя пальцем от края, система заботится о раскрытии системных полос-ваше приложение даже не будет знать, что жест произошел. Поэтому, если пользователю действительно может потребоваться провести пальцем от края экрана в качестве части основного приложения, например, при игре в игру, которая требует большого количества прокрутки или использования приложения для рисования, вы должны вместо этого включить "липкий" режим погружения.

для получения дополнительной информации:включить полноэкранный режим

в случае, если ваш с помощью клавиатуры, иногда бывает, что строка состояния показывает, когда клавиатура появляется. В этом случае я обычно добавляю это в свой стиль xml

стили.xml

а также эта строка в моем манифесте

после большого количества времени без успеха я пришел с моим собственным решением, которое выходит похожим с другим разработчиком. Так что если кто-то нуждается в ней это is.My проблема заключалась в том, что панель навигации системы не скрывалась после вызова. Также в моем случае мне нужен был пейзаж, так что на всякий случай прокомментируйте эту строку и все такое. Прежде всего Создайте стиль

Это мой файл манифеста

Это моя spalsh деятельность

>

и это моя основная полноэкранная деятельность. onSystemUiVisibilityChange thi метод quit важно в противном случае android главная панель навигации после вызова останется и не исчезнет больше. Действительно раздражает проблема, но эта функция решает эту проблему.

public class MainActivity расширяет AppCompatActivity

>

Это мой макет заставки:

Я надеюсь, что это поможет вам

внутри стили.xml.

это сработало для меня. Надеюсь, это вам поможет.

Я пытаюсь добавить меню на панель инструментов. onCreateOptionsMenu метод Activity вызывается, но меню не появляется.

это приборная панель.xml (из папки меню)

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

надувание меню в деятельности:

и основная тема для приложения:

почему onCreateOptionsMenu вызывается, но меню не появляется. Я используя appcompat-v7:21.0.3

Я также столкнулся с той же проблемой, но фактическая ошибка заключалась в том, что я забыл ввести панель инструментов в Java activity

под AppCompactActivity , в разделе on create метод определите панель инструментов по id и вызовите setSupportActionBar(ToolBar);

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

у вас есть панель инструментов в макете панели инструментов ?. Вызовите setSupportActionBar (панель инструментов) в вашей деятельности. Используйте Тему.Совместимости приложений.NoActionBar тема для действий (Если вы используете панель инструментов в нем)

Проверьте свои стили.

добавить тему в вашей деятельности в манифест

Если вы используете Toolbar вам нужно установить его в качестве панели действий поддержки в onCreate :

вы, ребята, делаете это неправильно. вам нужно раздуть свое меню в onCreateOptionsMenu активности:

Если вы раздуваете меню из фрагмента, например, путем переопределения onCreateOptionsMenu метод, обязательно позвоните setHasOptionsMenu(true) на onCreateView ваш фрагмент

проблема решена, когда я изменил его на app:showAsAction на android: showAsAction

в моем случае это было глупо просто. Моя панель инструментов была дочерним элементом AppBarLayout, и по какой-то причине, когда я устанавливал панель инструментов с макетом ограничения, параметр layout_width XML панели инструментов был установлен в 0dp. Итак, панель инструментов была там, но невидима. (>_

Итак, если ничего сверху вам не помогло, просто проверьте параметры "layout_width" и "layout_height".

надеюсь, это сэкономит кому-то время :)

добавить значок, который вы хотите в папке mipmap

ic_menu_options

создать menu_analysis.xml (под значениями папки меню.в XML)

теперь onPrepareOptionMenu под вашим классом Java

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

Android поддерживает два типа меню : главное и контекстное (других пока не придумано). В старых телефонах имеется отдельная кнопка Menu, нажатие которой открывает главное меню. Начиная с версии Android 3.0 (уровень API 11) наличие отдельной кнопки Меню больше не требуется; Android приложения перестали зависеть от традиционной панели меню из 6 пунктов. Вместо нее в приложениях появилась строка действий ActionBar с часто используемыми действиями пользователя. Несмотря на то, что интерфейс и поведение некоторых пунктов меню изменились, бизнес-логика определения набора действий по-прежнему основана на API-интерфейсах класса Menu. Таким образом, начиная с версии Android 3.0 пункты меню размещаются в строке действий ActionBar в виде сочетания отображаемых на экране вариантов действий и иконки из трёх вертикальных точек, которую расположили в правой верхней части приложения. При нажатии на иконку открывается отдельное окно, в котором вертикально отображается список дополнительных вариантов выбора.

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


Определение интерфейса

В интерфейсе приложения (activity_main.xml) создаваемый по умолчанию компонент TextView с текстом "Hello World" удаляем. После этого подключаем панель инструментов. Для этого в панели Palette (нижний скриншот) открываем вкладку Containers и перетаскиваем в панель Component Tree компонент AppBarLayout. Компонент Toolbar будет добавлен автоматически.


Исходный текст файла конфигурации интерфейса activity_main.xml можно подкорректировать так, чтобы он выглядел следующим образом :

Листинг activity_main.xml

Иконки пунктов меню

Прежде чем формировать меню, загрузим в директорию модуля res/drawable следующие иконки (более 6) :










Для этого можно использовать Ctrl+C, Ctrl+V. Копирование изображений в проект подробно рассмотрено здесь.

Создание меню

В примере будем использовать ресурсный файл меню, т.е. для описания меню будет использоваться XML файл, располагаемый в директории проекта res/menu/. Для формирования ресурсного XML файла описания меню выбираем в Studio New/Android Resource File, и, в открывшемся окне, определяем наименование «main_menu». Нажимаем OK, и в директории res/menu/ будет создан файл main_menu.xml.


Описание меню включает следующие секции :

  • <menu> корневой элемент в XML-структуре файла; может содержать один или несколько элементов <item> и <group>;
  • <item> непосредственный пункт меню; элемент может иметь вложенный элемент <menu> для создания подменю;
  • <group> невидимый контейнер для пунктов меню; позволяет выполнять группирование элементов (необязательная секция).

В следующем листинге файла main_menu.xml представлены 2 первых пункта меню нашего примера. Пункт меню с тележкой (Cart) определяем постоянно видимым (app:showAsAction="always"), а пункт меню Call – невидимым (app:showAsAction="never"); он будет доступен при открытии главного меню.

Каждый пункт меню включает следующие атрибуты :

• id идентификатор пункта меню, по которому приложение может распознать выделенный пользователем пункт меню;
• title отображаемый текст;
• icon отображаемый рядом с текстом иконка;
• showAsAction определяет поведение меню в ActionBar;
• enabled определение доступности пункта меню (не используется в примере);
• orderInCategory порядок отображения в ActionBar (не используется в примере);
• titleCondensed атрибут применяется в том случае, если обычный заголовок слишком широкий и не «помещается» в выбранном элементе меню (не используется в примере).

Важный атрибут app:showAsAction определяет поведение меню в ActionBar. Значение never означает, что элемент меню не должен выводиться в заголовке ActionBar, а только во всплывающем меню. Если установить значение always, то пункт меню будет представлен в заголовке приложения (ActionBar). Также доступны значения ifRooms (если позволяет место), withText и collapseActionView.

Конечно же, следовало бы локализовать меню в примере. Для этого необходимо определить наименования пунктов меню в ресурсном файле res/values/strings.xml и подключить их в опциях android:title пунктов меню. Но для данного примера, где рассматривается меню, локализация пунктов меню не имеет значения.

Группирование пунктов меню

Группирование пунктов меню осуществляется с использованием секции <group>. В секции можно объединить несколько пунктов меню, дополнив их переключателями. Добавим элемент group с атрибутом android:checkableBehavior="single" для двух других пунктов меню Camera и Video, как это представлено в следующем листинге. Такой тип группировки определяет возможность выбора/выделения одного из двух пунктов меню, подобно кнопкам типа Radio.

Атрибут checkableBehavior может иметь одно из трех следующих значений :
• single только один пункт из группы можно пометить (переключатель);
• all все пункты группы можно пометить (флажки);
• none нельзя ни один пункт из группы пометить.

Интерфейс меню

Среда разработки Android Studio представляет описание файла меню main_menu.xml в двух режимах ( Design | Text ) подобно описанию интерфейса activity_main.xml. На следующем скриншоте main_menu.xml представлен в режиме Design. В графическом интерфейсе файла main_menu.xml изображены все пункты меню. При этом в заголовке ActionBar располагается первый пункт меню с изображением тележки, рядом с которой располагается иконка с вертикальным изображением трех точек. При нажатии на эту иконку в режиме run-time будет открыто (представленное на скриншоте) вертикально расположенное в ActionBar меню.


В панели Component Tree представлена иерархическая структура меню. Рядом с каждым пунктом меню располагается иконка с предупреждением о необходимости локализации текста, о чем было сказано выше.

Поскольку в меню используются иконки, то необходимо внести изменения в файл проекта res/values/styles.xml и в файл студии Gradle Scripts/p06menu.

Листинг res/values/styles.xml

Внесенные в файл изменения выделены жирным стилем.

Листинг Gradle Scripts/p06menu

В директории Gradle Scripts располагаются некоторые файлы модулей. Для того, чтобы в меню наряду с текстом отображались иконки необходимо в файл Gradle Scripts/p06menu примера добавить строку.


В следующем листинге представлен текст файла Gradle Scripts/p06menu. Последняя выделенная строка необходима, чтобы в пунктах меню можно было использовать иконки. Согласуйте номер со своей версией SDK.

Обработчики событий

Для подключения к пункту меню метода обработки сообытия необходимо в атрибуте описания пункта меню android:onClick определить его наименование.

Подключение меню

MainActivity.java может иметь только одно меню. Если приложение имеет несколько экранов, то у каждой активности должно быть отдельное меню со своими настройками. Для подключения меню к активности необходимо переписать метод активности onCreateOptionsMenu. В следующем листинге представлен код активности с двумя методами onCreate и onCreateOptionsMenu (представленные выше методы не включены в листинг). В первом методе создается активность, во втором методе к активности подключается меню. Метод onCreateOptionsMenu вызывается активностью один только раз при первом открытии меню. Но, поскольку, один из пунктов меню (Cart) видимый, то метод вызывается сразу же, при формировании интерфейса приложения.

В методе onCreateOptionsMenu сначала создается объект типа MenuInflater. После этого вызывается метод этого объекта inflate, которому в качестве параметров передаются ресурсное меню (R.menu.menu_main) и объект класса Menu. Если объект menu имеет тип MenuBuilder, используется рефлексия, чтобы вызвать метод объекта setOptionalIconsVisible.

Примечание : Android Studio предупреждает, что рефлексия не поддерживается системой и в будущем может не работать (в примере с текущей версией системы работает).

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

Но, к сожалению, я не смог сразу же заставить этот код работать : здесь Android Studio ругалась на метод setOptionalIconsVisible, который в примере был вызван с использованием рефлексии. Полагаю, что как только эта проблема будет решена, то в статью будут внесены соответствующие изменения и данные строки Вы не увидите.

Читайте также: