Как скрыть строку заголовка для 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);
}
-
в манифесте наследуют стиль:
<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, например, без названия. Другими словами, выньте его из своего тега приложения, откройте объявление тега и поместите его в желаемый тег активности.