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

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

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

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

Ответы [ 35 ]

6 голосов
/ 19 июля 2016

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

В декларации моей деятельности:

<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>
6 голосов
/ 11 мая 2016

В моем случае, если вы используете Android Studio 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>

А вот и снимок (см. Код выделения): enter image description here

5 голосов
/ 21 февраля 2015

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

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 к этому ответу.

5 голосов
/ 23 марта 2017

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

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

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); * * 1 014

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

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

ПРИМЕЧАНИЕ : Вы должны сохранить эти строки до setContentView

4 голосов
/ 25 сентября 2012

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

Один. Флаги окна уже установлены внутри 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 внутри панели заголовка, означающая, что текущее действие является иерархическим потомком другого действия, и в этом случае вы можете закомментировать или удалить эту строку кода изнутри onCreate метод.

getActionBar().setDisplayHomeAsUpEnabled(true);
4 голосов
/ 11 октября 2016

Добавьте theme @ style / Theme.AppCompat.Light.NoActionBar в свою деятельность на AndroidManifest.xml следующим образом

<activity
        android:name=".activities.MainActivity"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar">
    </activity>
4 голосов
/ 31 марта 2015

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

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

3 голосов
/ 20 марта 2017

добавить в файл манифеста,

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

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

  this.requestWindowFeature(Window.FEATURE_NO_TITLE);
2 голосов
/ 09 апреля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...