Jak ukryć pasek tytułowy dla aktywności w XML z istniejącym motywem niestandardowym
Chcę ukryć pasek tytułowy dla niektórych moich działań. Problem polega na tym, że zastosowałem styl do wszystkich moich działań, dlatego nie mogę po prostu ustawić tematu na @android:style/Theme.NoTitleBar
.
Użycie motywuNoTitleBar jako rodzica dla mojego stylu usunęłoby pasek tytułowy ze wszystkich moich działań.
Czy Mogę ustawić gdzieś element stylu Bez tytułu?
30 answers
Zrób to metodą 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
odnosi się do Activity
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-24 21:50:18
Możesz zmodyfikować swoje AndroidManifest.xml
:
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
Lub użyj android:theme="@android:style/Theme.Black.NoTitleBar"
, jeśli nie potrzebujesz aktywności na pełnym ekranie.
Uwaga: jeśli używałeś wcześniej widoku "domyślnego", prawdopodobnie powinieneś również zmienić klasę nadrzędną z AppCompatActivity
na Activity
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-05 10:52:26
Zrobiłem teraz co następuje.
Zadeklarowałem styl dziedziczący wszystko z mojego stylu ogólnego, a następnie wyłączanie paska tytułowego.
<style name="generalnotitle" parent="general">
<item name="android:windowNoTitle">true</item>
</style>
Teraz mogę ustawić ten styl dla każdego działania, w którym chcę ukryć pasek tytułowy nadpisując styl aplikacji i dziedzicząc wszystkie inne informacje o stylu, bez powielania w kodzie stylu.
Aby zastosować styl do konkretnej czynności, Otwórz AndroidManifest.xml
i dodaj następujący atrybut do activity
tag;
<activity
android:theme="@style/generalnotitle">
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-06 18:28:14
Nie podoba mi się this.requestWindowFeature(Window.FEATURE_NO_TITLE);
, ponieważ pasek tytułu pojawia się krótko, a następnie znika.
Nie podoba mi się również android:theme="@android:style/Theme.NoTitleBar"
, ponieważ straciłem wszystkie zmiany 3.0+ Holo, do których użytkownicy nowych urządzeń się przyzwyczaili. Więc natknąłem się na to rozwiązanie.
W Twoim folderze res / values Utwórz plik o nazwie styles.xml (Jeśli jeszcze nie istnieje). W tym pliku umieść następujący kod:
<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>
Następnie utwórz res / values-v11 z innym style.plik xml (Po raz kolejny może już istnieć). W tym pliku umieść następujący kod:
<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>
A jeśli celujesz w 4.0+, utwórz folder res / values-v14 z jeszcze jednym stylami.plik xml (Tak, może już tam być). W tym pliku umieść następujący kod:
<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>
Wreszcie, po utworzeniu wszystkich tych plików, otwórz AndroidManifiest.plik xml możesz dodać kod:
android:theme="@style/Theme.NoTitle"
Do znacznika aktywności nie chcesz używać tytułu ani znacznika aplikacji, jeśli ma on dotyczyć całej aplikacji.
Teraz użytkownicy otrzymają motywy związane z ich wersją Urządzenia z układem ekranu, który chcesz.
P. S. zmiana wartości na android:theme="@style/Theme.FullScreen"
będzie miała ten sam efekt, ale także usunie pasek powiadomień.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-02 01:06:23
Pasek tytułu można usunąć na dwa sposoby, jak wspomniano na stronie dewelopera Androida:
W pliku manifest.xml
:
-
Dodaj w
application
, Jeśli chcesz go usunąć dla wszystkich działań w aplikacji:<application android:theme="@android:style/Theme.Black.NoTitleBar">
-
Lub dla konkretnej czynności:
<activity android:theme="@android:style/Theme.Black.NoTitleBar">
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-16 14:00:23
Poprawną odpowiedzią prawdopodobnie jest nie Rozszerzanie ActionbarActivity raczej Rozszerzanie tylko aktywności
Jeśli nadal używasz ActionBar activity wygląda na to, że to działa:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().hide(); //<< this
setContentView(R.layout.activity_main);
}
Wygląda na to, że to też działa:
styles.xml:
<style name="AppBaseTheme" parent="Theme.AppCompat.Light" >
<item name="android:windowNoTitle">true</item> <!-- //this -->
</style>
Mógłbym zrobić tak, jak napisał Scott Biggs. to działa. tyle, że nie ma żadnego tematu. chodzi mi o to, że tło menu ustawień jest przezroczyste:
Just change
public class MainActivity extends ActionBarActivity {
Do aktywności lub fragmentu
public class MainActivity extends Activity {
Jednak ja może to wyglądać wystarczająco dobrze za pomocą projektu materiału i nie usuwać actionbar: https://gist.github.com/shimondoodkin/86e56b3351b704a05e53
- Ustaw ikonę aplikacji
- Ustaw kolory paska akcji, aby pasowały do projektu.
- Ustaw ikonę w menu Ustawienia
- dodaj więcej ikon (przycisków na górze)
Jest to przykład stylizacji actionbar kompatybilności projektu materiału.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-08 20:17:58
Co u mnie działa:
1 - w stylach.xml:
<style name="generalnotitle" parent="Theme.AppCompat.Light" >
<item name="android:windowNoTitle">true</item> <!-- //this -->
</style>
2 - w głównej aktywności
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().hide(); //<< this
setContentView(R.layout.activity_main);
}
-
W manifestu Dziedzicz styl:
<activity android:name=".MainActivity" android:theme="@style/generalnotitle">
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-11-11 07:17:20
Jeśli użyjesz this.requestWindowFeature(Window.FEATURE_NO_TITLE)
użytkownik nadal będzie mógł zobaczyć pasek tytułu tylko przez chwilę podczas uruchamiania animacji, gdy aktywność rozpocznie się przez onCreate
. Jeśli użyjesz @android:style/Theme.Black.NoTitleBar
, Jak pokazano poniżej, pasek tytułu nie będzie wyświetlany podczas uruchamiania animacji.
<activity
android:name=".MainActivity"
android:label="My App"
android:theme="@android:style/Theme.Black.NoTitleBar"
android:screenOrientation="portrait">
Powyższy przykład oczywiście nadpisze istniejący motyw aplikacji, Jeśli masz istniejący motyw, Dodaj do niego <item name="android:windowNoTitle">true</item>
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-28 23:17:37
Kiedy próbowałem korzystać z tych wszystkich wysokich upvoted odpowiedzi moja aplikacja zawsze zawiesiła. (myślę, że ma to coś wspólnego z "@ android: style"?)
Najlepszym rozwiązaniem dla mnie było użycie:
android:theme="@style/Theme.AppCompat.NoActionBar"
Nie ma już paska nagłówka / tytułu. Po prostu umieść go w <application>...</application>
lub <activity>...</activity>
w zależności od tego, czy (nie) chcesz go w całej aplikacji, czy tylko określonej aktywności.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-17 16:08:39
Utwórz motyw jak poniżej.
<!-- 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>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-21 10:59:16
Dodaj
<item name="android:windowNoTitle">true</item>
Inside AppTheme (styles.xml)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-29 14:35:03
Po prostu użyj getActionBar().hide();
w swojej głównej metodzie aktywności onCreate()
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-16 14:02:22
Dla AppCompat
, następujące rozwiązanie zadziałało dla mnie:
Dodaj nowy styl motywu bez paska akcji w styles.xml
i ustaw 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>
teraz zaimplementuj ten sam styl motywu do działania na ekranie powitalnym w 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>
Oto wynik:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-22 15:09:09
Musisz tylko zmienić AppTheme
Styl W Stylu.xml jeśli zastąpisz definicję z DarkActionBar
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
Do NoActionBar
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
AppTheme zdefiniowane w AndroidManifast.xml
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-02 16:49:33
W metodzie onCreate
Użyj następującego fragmentu:
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-25 11:18:17
Możesz użyć tego kodu w swoim pliku java
Dodaj tę linię przed ustawieniem lub załaduj widok
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-08 05:15:51
Dodaj oba do tematu, którego używasz:
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-14 13:18:34
Dodaj ten styl do swojego stylu.plik xml
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
Po tym odwołaj tę nazwę stylu do swojego androidManifest.xml w aktywności perticularnej, w której nie chcesz widzieć paska tytułowego, jak poniżej.
<activity android:name=".youractivityname"
android:theme="@style/AppTheme.NoActionBar">
</activity>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-13 19:16:37
Używam wsparcia widget Toolbar v7. Tak więc, aby móc usunąć lub ukryć Tytuł musimy to napisać.
Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);
//Remove¡ing title bar
getSupportActionBar().setDisplayShowTitleEnabled(false);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-13 20:51:28
Wierzę, że jest tylko jedna odpowiedź na to w 2020
Dodaj następujący wiersz do stylów.xml
<item name="windowNoTitle">true</item>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-13 11:01:02
Lub jeśli chcesz ukryć / pokazać pasek tytułu w dowolnym momencie:
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);
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-26 07:02:42
W moim przypadku, jeśli używasz android studio 2.1, a twoja skompilowana wersja SDK to 6.0, po prostu przejdź do manifestu.plik xml i zmień następujący kod:
Oto kod:
<?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>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-11 17:36:58
To rozwiązało mój problem
W manifestacji mojej aktywności:
<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>
W stylu pod nazwą "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>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-19 12:51:40
Aby ukryć zarówno tytuł jak i pasek akcji zrobiłem tak:
W znaczniku aktywności manifestu:
android:theme="@style/AppTheme.NoActionBar"
W Aktywności.java przed setContentView:
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
Tzn.,
/ / usuń pasek tytułu
To.requestWindowFeature (Window.FEATURE_NO_TITLE);
//usuń pasek powiadomień
To.getWindow ().setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
Uwaga: ty trzeba zachować te linie przed setContentView
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-23 12:36:18
Pierwsza odpowiedź to amfibole. oto moje wyjaśnienie: dodaj:
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
W metodzie oncreate ().
Przed:
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
(nie tylko przed setContentView) jeśli tego nie zrobisz, dostaniesz forceclose. + 1 Ta odpowiedź.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-21 10:13:52
Tak wygląda cały kod. Zwróć uwagę na import Androida.widok.Okno.
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);
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-31 07:41:54
Dodaj motyw @style / Theme.AppCompat.Światło.NoActionBar w swojej aktywności na AndroidManifest.XML like this
<activity
android:name=".activities.MainActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
</activity>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-11 17:07:39
Znalazłem dwa powody, dla których ten błąd może wystąpić.
Jeden. flagi okien są już ustawione wewnątrz super.onCreate(savedInstanceState);
w takim przypadku możesz użyć następującej kolejności poleceń:
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
Dwa. masz przycisk Back/Up wewnątrz paska tytułowego, co oznacza, że bieżąca aktywność jest hierarchicznym potomkiem innej aktywności, w takim przypadku możesz chcieć skomentować lub usunąć tę linię kodu z metody onCreate
.
getActionBar().setDisplayHomeAsUpEnabled(true);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-25 08:33:26
Jeśli robisz to, co mówią użytkownicy YaWi Doug Paul, musisz pamiętać, że funkcje okna muszą być ustawione przed wywołaniem setContentView. Jeśli nie, otrzymasz wyjątek.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-16 14:01:20
Dodaj do pliku MANIFEST,
android:theme="@android:style/Theme.Translucent.NoTitleBar"
Dodaj następujący wiersz do pliku ur java,
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-20 06:29:07