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

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

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

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

Ответ 1

Я сейчас сделал следующее.

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

<style name="generalnotitle" parent="general">
    <item name="android:windowNoTitle">true</item>
</style>

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

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

<activity
    android:theme="@style/generalnotitle">

Ответ 2

Сделайте это в своем методе 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.

Ответ 3

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

<activity android:name=".MainActivity"
          android:label="@string/app_name"
          android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">

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

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

Ответ 4

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

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

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

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Theme.Default" parent="@android:style/Theme"></style>
    <style name="Theme.NoTitle" parent="@android:style/Theme.NoTitleBar"></style>
    <style name="Theme.FullScreen" parent="@android:style/Theme.NoTitleBar.Fullscreen"></style>
</resources>

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

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Theme.Default" parent="@android:style/Theme.Holo"></style>
    <style name="Theme.NoTitle" parent="@android:style/Theme.Holo.NoActionBar"></style>
    <style name="Theme.FullScreen" parent="@android:style/Theme.Holo.NoActionBar.Fullscreen"></style>
</resources>

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

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Theme.Default" parent="@android:style/Theme.Holo.Light"></style>
    <style name="Theme.NoTitle" parent="@android:style/Theme.Holo.Light.NoActionBar"></style>
    <style name="Theme.FullScreen" parent="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen"></style>
</resources>

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

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

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

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

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

Ответ 5

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

В файле manifest.xml:

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

    <application android:theme="@android:style/Theme.Black.NoTitleBar">
    
  • Или для определенного вида деятельности:

    <activity android:theme="@android:style/Theme.Black.NoTitleBar">
    

Ответ 6

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


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

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

Кажется, это тоже работает:

styles.xml:

   <style name="AppBaseTheme" parent="Theme.AppCompat.Light" >
          <item name="android:windowNoTitle">true</item>   <!-- //this -->     
   </style>

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

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

public class MainActivity extends ActionBarActivity {

для Activity или FragmentActivity

public class MainActivity extends Activity  {

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

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

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

Ответ 7

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

<activity 
    android:name=".MainActivity" 
    android:label="My App"
    android:theme="@android:style/Theme.Black.NoTitleBar"
    android:screenOrientation="portrait">
Пример

выше, очевидно, переопределит вашу существующую тему приложения, если у вас есть существующая тема, а затем добавьте <item name="android:windowNoTitle">true</item> к ней.

Ответ 8

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

1- в styles.xml:

 <style name="generalnotitle" parent="Theme.AppCompat.Light" >
          <item name="android:windowNoTitle">true</item>   <!-- //this -->     
   </style>

2- в MainActivity

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

    <activity android:name=".MainActivity" android:theme="@style/generalnotitle">
    

Ответ 9

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

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

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

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

Ответ 10

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

 <!-- Variation on the Light theme that turns off the title -->
<style name="MyTheme" parent="android:style/Theme.Black">
    <item name="android:windowNoTitle">true</item>
</style>

Ответ 11

Добавить

<item name="android:windowNoTitle">true</item>

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

Ответ 12

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

Ответ 13

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

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

to NoActionBar

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

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

Ответ 14

В вашем методе onCreate используйте следующий фрагмент:

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

Ответ 15

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

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

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

Ответ 16

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

    <item name="windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>

Ответ 17

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

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

<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">

    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimary</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:windowBackground">@color/colorPrimary</item>

</style>


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

<activity
        android:name=".ActivityName"
        android:theme="@style/SplashTheme"> // apply splash them here 

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
</activity>

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

enter image description here

Ответ 18

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

 <style name="AppTheme.NoActionBar">
     <item name="windowActionBar">false</item>
     <item name="windowNoTitle">true</item>
 </style>

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

<activity android:name=".youractivityname"
     android:theme="@style/AppTheme.NoActionBar">
</activity>

Ответ 19

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

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);
}

Ответ 20

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

Вот код:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.lesterxu.testapp2">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat.NoActionBar">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

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

Ответ 21

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

Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);

//Remove¡ing title bar
getSupportActionBar().setDisplayShowTitleEnabled(false);

Ответ 22

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

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) если не сделаете этого, вы получите силу. +1 этот ответ.

Ответ 23

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

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

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".SplashScreen">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

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

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme"
        parent="Theme.AppCompat.Light.NoActionBar">
        **<item name="windowActionBar">false</item>
        <item name="android:windowNoTitle">true</item>**
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

</resources>

Ответ 24

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

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

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

Ответ 25

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

Один. Флаги 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.

getActionBar().setDisplayHomeAsUpEnabled(true);

Ответ 26

Вот как выглядит полный код. Обратите внимание на импорт 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);
    }
}

Ответ 27

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

<activity
        android:name=".activities.MainActivity"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar">
    </activity>

Ответ 28

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

Ответ 29

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

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

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

  this.requestWindowFeature(Window.FEATURE_NO_TITLE);

Ответ 30

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