Как скрыть строку заголовка для Activity в XML с существующей пользовательской темой

Я хочу скрыть заголовок для некоторых из моих действий. Проблема в том, что я применил стиль ко всем моим действиям, поэтому я не могу просто задать тему для @android:style/Theme.NoTitleBar .

Использование темы NoTitleBar в качестве родителя для моего стиля удалит строку заголовка из всех моих действий.

Могу ли я установить элемент стиля без названия?

Сделайте это в onCreate() .

 //Remove title bar this.requestWindowFeature(Window.FEATURE_NO_TITLE); //Remove notification bar this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); //set content view AFTER ABOVE sequence (to avoid crash) this.setContentView(R.layout.your_layout_name_here); 

this относится к Activity .

Вы можете изменить свой AndroidManifest.xml :

  

или использовать android:theme="@android:style/Theme.Black.NoTitleBar" если вам не нужна полноэкранная активность.

Примечание. Если вы раньше использовали представление по умолчанию, вы, вероятно, также должны изменить родительский class из AppCompatActivity для Activity .

Теперь я сделал следующее.

Я объявил стиль, наследующий все от моего общего стиля, а затем отключив titleBar.

  

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

Чтобы применить стиль к определенному действию, откройте AndroidManifest.xml и добавьте следующий атрибут к тегу activity ;

  

Мне не нравится this.requestWindowFeature(Window.FEATURE_NO_TITLE); потому что строка заголовка появляется ненадолго, а затем исчезает.

Мне также не нравится android:theme="@android:style/Theme.NoTitleBar" потому что я потерял все изменения 3.0 + Holo, к которым привыкли пользователи новых устройств. Поэтому я наткнулся на это решение.

В папке res / values создайте файл с именем styles.xml (если он еще не существует). В этом файле введите следующий код:

      

Затем создайте res / values-v11 с другим файлом styles.xml (опять же это может уже существовать). В этом файле введите следующий код:

      

А если вы ориентируетесь на 4.0+, создайте папку res / values-v14 с еще одним файлом styles.xml (да, возможно, она уже существует). В этом файле введите следующий код:

      

Наконец, при создании всех этих файлов откройте файл AndroidManifiest.xml, который вы можете добавить:

 android:theme="@style/Theme.NoTitle" 

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

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

PS Изменение значения для android:theme="@style/Theme.FullScreen" будет иметь тот же эффект, но также удалить панель уведомлений.

Строку заголовка можно удалить двумя способами, как указано на странице разработчика Android:

В файле manifest.xml :

  1. Добавьте в application следующее, если вы хотите удалить его для всех действий в приложении:

      
  2. Или для конкретной деятельности:

      

правильный ответ, вероятно, заключается в том, чтобы не расширять ActionbarActivity, а расширять только активность


если вы все еще используете активность в действии, похоже, это работает:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getSupportActionBar().hide(); //<< this setContentView(R.layout.activity_main); } 

похоже, это тоже работает:

 styles.xml:  

я мог бы сделать так, как писал Скотт Биггс. таких работ. кроме темы тогда нет. Я имею в виду, что фон меню настроек прозрачен:

просто измените

 public class MainActivity extends ActionBarActivity { 

к активности или fragmentации

 public class MainActivity extends Activity { 

однако я мог бы сделать его достаточно хорошим, используя конструкцию материалов, и не удалять панель действий: https://gist.github.com/shimondoodkin/86e56b3351b704a05e53

  1. установить значок приложения
  2. установить цвета панели действий в соответствии с дизайном.
  3. установить значок в меню настроек
  4. добавить больше значков (кнопки сверху)

это пример применения стиля панели совместимости материалов.

Если вы используете this.requestWindowFeature(Window.FEATURE_NO_TITLE) пользователь все равно сможет увидеть строку заголовка на мгновение во время анимации запуска, когда активность начнется через onCreate . Если вы используете @android:style/Theme.Black.NoTitleBar как показано ниже, строка заголовка не будет отображаться во время анимации запуска.

  

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

что работает для меня:

1- в styles.xml:

   

2- в MainActivity

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getSupportActionBar().hide(); //<< this setContentView(R.layout.activity_main); } 
  1. в манифесте наследуют стиль:

      

когда я пытался использовать все эти высокие ответы, мое приложение всегда разбилось. (я думаю, что это имеет какое-то отношение к «@android: style»?)

Лучшим решением для меня было следующее:

 android:theme="@style/Theme.AppCompat.NoActionBar" 

Нет заголовка / заголовка. Просто поместите его в ... или ... зависимости от того, хотите ли вы (не хотите) его в целом приложении или только в конкретном действии.

Создайте тему, как показано ниже.

    

Добавить

true

внутри AppTheme (styles.xml)

Просто используйте getActionBar().hide(); в вашей основной деятельности onCreate() .

Вам просто нужно изменить стиль AppTheme в Style.xml, если вы замените определение DarkActionBar

  

NoActionBar в NoActionBar

  

AppTheme, определенный в AndroidManifast.xml

Вы можете использовать этот код в своем java-файле

добавьте эту строку перед установкой или загрузкой

 requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); 

Добавьте оба из них для темы, которую вы используете:

  false true 

В методе onCreate используйте следующий fragment:

 this.requestWindowFeature(Window.FEATURE_NO_TITLE); 

Для AppCompat для меня работало следующее решение:

Добавьте новый стиль темы без панели действий в styles.xml и установите parent="Theme.AppCompat.NoActionBar" .

  

Теперь реализуйте один и тот же стиль темы для активности вашего заставки в androidManifest.xml

  // apply splash them here      

Вот результат:

введите описание изображения здесь

Добавьте этот стиль в свой файл style.xml

   

После этого ссылайтесь на это имя стиля в ваш androidManifest.xml в perticular activity, в котором вы не хотите видеть заголовок, как показано ниже.

   

Или если вы хотите скрыть / показать строку заголовка в любой момент:

 private void toggleFullscreen(boolean fullscreen) { WindowManager.LayoutParams attrs = getWindow().getAttributes(); if (fullscreen) { attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN; } else { attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN; } getWindow().setAttributes(attrs); } 

Первый ответ – амфибол. вот мое объяснение: добавьте:

 this.requestWindowFeature(Window.FEATURE_NO_TITLE); this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 

в методе oncreate ().

до:

 super.onCreate(savedInstanceState); setContentView(R.layout.activity_start); 

(а не только перед setContentView), если этого не сделать, вы получите forceclose. +1 этот ответ.

В моем случае, если вы используете Android 2.1, а ваша версия SDK для компиляции – 6.0, просто перейдите в файл manifest.xml и измените следующий код:

Вот код:

            

И вот стрельба по съемке (см. Код выделения): введите описание изображения здесь

Я использую панель виджета поддержки v7. Итак, чтобы иметь возможность удалить или скрыть заголовок, нам нужно написать это.

 Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar); setSupportActionBar(myToolbar); //Remove¡ing title bar getSupportActionBar().setDisplayShowTitleEnabled(false); 

Чтобы скрыть панель заголовка и действия, я сделал следующее:

В теге активности манифеста:

 android:theme="@style/AppTheme.NoActionBar" 

В Activity.java перед setContentView:

 this.requestWindowFeature(Window.FEATURE_NO_TITLE); this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 

т.е.

// Удалить строку заголовка

this.requestWindowFeature (Window.FEATURE_NO_TITLE);

// Удаление панели уведомлений

this.getWindow (). setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

ПРИМЕЧАНИЕ . Вам нужно сохранить эти строки перед установкой setContentView

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

Один. Флаги Window установлены уже в super.onCreate(savedInstanceState); в этом случае вы можете использовать следующий порядок команд:

 this.requestWindowFeature(Window.FEATURE_NO_TITLE); this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); super.onCreate(savedInstanceState); 

Два. У вас есть кнопка Back / Up внутри TitleBar, что означает, что текущая активность является иерархическим дочерним элементом другой активности, и в этом случае вам может onCreate прокомментировать или удалить эту строку кода внутри метода onCreate .

 getActionBar().setDisplayHomeAsUpEnabled(true); 

Вот как выглядит полный код. Обратите внимание на импорт android.view.Window.

 package com.hoshan.tarik.test; import android.app.Activity; import android.os.Bundle; import android.view.Window; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); } } 

Это решило мою проблему

В манифесте моя деятельность:

        

В стиле под именем «AppTheme»:

     

Добавьте тему @ style / Theme.AppCompat.Light.NoActionBar в вашу активность на AndroidManifest.xml, как это

   

Если вы делаете то, что говорят пользователи YaW и Doug Paul , то вам нужно иметь в виду, что перед вызовом setContentView необходимо установить функции windows. Если нет, вы получите исключение.

добавить в явный файл,

  android:theme="@android:style/Theme.Translucent.NoTitleBar" 

добавьте следующую строку в ur java-файл,

  this.requestWindowFeature(Window.FEATURE_NO_TITLE); 

Гм, вы можете применять темы к отдельным действиям в XML, например, без названия. Другими словами, выньте его из своего тега приложения, откройте объявление тега и поместите его в желаемый тег активности.

Interesting Posts

Подавлять типы нулевых значений от испускания XmlSerializer

iPhone: конвертировать строку даты в относительную отметку времени

Найдите отсутствующие и повторяющиеся элементы в массиве в линейном времени и постоянном пространстве

Сервер WWW сообщает об ошибке после запроса POST через интернет Прямые компоненты в Delphi

Как вы всегда используете интерфейс Google на выбранном вами языке?

Удалить дубликаты из ArrayLists

Удаление файлов при удалении WiX

Почему Ubuntu монтирует неправильный раздел с правами root?

Могу ли я поделиться своей клавиатурой USB между двумя компьютерами?

Уменьшение массива в OpenMP

android: выключить экран, когда он близок к лицу

Левое смещение с отрицательным сдвигом

Как я могу запутать свой код c #, так что его нельзя легко деобфусить?

Шаблонный набор – вызов функции для каждого элемента

Изменение часового пояса с dpkg-reconfigure tzdata и debconf-set-selection

Давайте будем гением компьютера.