So blenden Sie die Titelleiste für eine Tätigkeit in XML-Daten mit vorhandenen benutzerdefinierten Thema
-
25-09-2019 - |
Frage
Ich möchte zum ausblenden der Titelleiste für einige meiner Aktivitäten.Das problem ist, dass ich einen Stil auf alle meine Aktivitäten, daher kann ich nicht einfach das Thema zu @android:style/Theme.NoTitleBar
.
Mit der NoTitleBar Thema als Elternteil für meinen Stil würde zu entfernen der Titelleiste von alle meine Aktivitäten.
Kann ich keine Titel style-Element irgendwo?
Lösung 3
Ich habe nun folgende.
erklärte ich einen Stil alles von meinem allgemeinen Stil erbt und dann die titleBar deaktivieren.
<style name="generalnotitle" parent="general">
<item name="android:windowNoTitle">true</item>
</style>
Jetzt kann ich diesen Stil auf jede Aktivität, in dem ich die Titelleiste Überschreiben der Anwendung breiten Stil ausblenden möchten und erben alle anderen Stil Informationen, dafür ohne Duplizierung im Stil-Code.
Um den Stil auf eine bestimmte Aktivität, offenen AndroidManifest.xml
anzuwenden und das folgende Attribut zum activity
Tag hinzuzufügen;
<activity
android:theme="@style/generalnotitle">
Andere Tipps
Tun Sie dies in Ihrer onCreate()
Methode.
//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
bezieht sich auf die Activity
.
Sie können Ihre AndroidManifest.xml
ändern:
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
oder Verwendung android:theme="@android:style/Theme.Black.NoTitleBar"
wenn Sie nicht brauchen eine Vollbild-Aktivität.
. Hinweis: Wenn Sie vor einer 'default' Ansicht verwendet haben, sollten Sie wahrscheinlich auch die übergeordnete Klasse von AppCompatActivity
zu Activity
ändern
Ich weiß nicht, wie die this.requestWindowFeature(Window.FEATURE_NO_TITLE);
weil die Titelleiste erscheint kurz, dann verschwindet.
ich nicht auch wie die android:theme="@android:style/Theme.NoTitleBar"
, weil ich all die 3.0+ Holo verloren ändert, dass die Nutzer der neuen Geräte haben sich daran gewöhnt. Also ich auf diese Lösung gekommen.
res / Werte Ordner eine Datei namens styles.xml machen (wenn es nicht bereits vorhanden ist). In dieser Datei den folgenden Code ein:
<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>
Als nächstes ein res / create values-v11 mit einer anderen styles.xml Datei (Auch diese bereits vorhanden sein kann). In dieser Datei den folgenden Code ein:
<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>
Und wenn Sie 4.0+ zielen, erstellen Sie eine res / Werte-v14 Ordner mit noch einem anderen styles.xml Datei (Ja es schon da sein kann). In dieser Datei den folgenden Code ein:
<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>
Schließlich mit all diesen Dateien erstellt haben, öffnen Sie Ihre AndroidManifiest.xml Datei, die Sie den Code hinzufügen:
android:theme="@style/Theme.NoTitle"
auf den Aktivitäts-Tag der Aktivität mögen Sie keinen Titel für oder die Anwendung Tag, wenn Sie es möchten, die gesamte Anwendung gelten.
Jetzt ist Ihre Benutzer werden die Themen mit dem Bildschirm im Zusammenhang mit ihrer Geräteversion erhalten Layout, das Sie sich wünschen.
P. S. Ändern Sie den Wert auf android:theme="@style/Theme.FullScreen"
die gleiche Wirkung haben, sondern auch Benachrichtigungsleiste entfernen.
Die Titelleiste kann auf zwei Arten entfernt werden, wie auf der Entwickler Android Seite erwähnt:
In der manifest.xml
-Datei:
-
Fügen Sie den folgenden in
application
, wenn Sie es für alle Aktivitäten in einer App entfernen möchten:<application android:theme="@android:style/Theme.Black.NoTitleBar">
-
oder für eine bestimmte Aktivität:
<activity android:theme="@android:style/Theme.Black.NoTitleBar">
Die richtige Antwort ist wahrscheinlich nicht ActionbarActivity zu erweitern und nicht nur Aktivität verlängern
Wenn Sie noch ActionBar Aktivität verwenden scheint dies funktioniert:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().hide(); //<< this
setContentView(R.layout.activity_main);
}
scheint dies funktioniert auch:
styles.xml:
<style name="AppBaseTheme" parent="Theme.AppCompat.Light" >
<item name="android:windowNoTitle">true</item> <!-- //this -->
</style>
Ich mag es könnte als Scott Biggs schrieb. diese Art von Arbeiten. ausgenommen es ist dann kein Thema. Ich meine den Hintergrund des Einstellungsmenü ist transparent:
nur ändern
public class MainActivity extends ActionBarActivity {
Zu Aktivität oder FragmentActivity
public class MainActivity extends Activity {
aber ich könnte es so aussehen, gut genug Material Design verwenden und nicht entfernen die ActionBar: https://gist.github.com/shimondoodkin/86e56b3351b704a05e53
- set Symbol der Anwendung
- set Farben Aktionsleiste Design entsprechen.
- set Symbol Einstellmenü
- Weitere Symbole (Schaltflächen oben) hinzufügen
ist es am Beispiel von Material-Design Kompatibilität ActionBar Styling.
Wenn Sie this.requestWindowFeature(Window.FEATURE_NO_TITLE)
Benutzer verwenden noch in der Lage sein, auf die Titelleiste zu sehen, nur für einen Moment während des Abschusses Animation, wenn die Aktivität beginnt durch onCreate
. Wenn Sie @android:style/Theme.Black.NoTitleBar
verwenden, wie unten dann Titelleiste angezeigt wird nicht beim Start Animation dargestellt werden.
<activity
android:name=".MainActivity"
android:label="My App"
android:theme="@android:style/Theme.Black.NoTitleBar"
android:screenOrientation="portrait">
obiges Beispiel wird offensichtlich Ihr bestehende Anwendung Thema außer Kraft setzen, wenn Sie bestehendes Thema dann <item name="android:windowNoTitle">true</item>
, um es hinzuzufügen.
, was funktioniert für mich:
1- in styles.xml:
<style name="generalnotitle" parent="Theme.AppCompat.Light" >
<item name="android:windowNoTitle">true</item> <!-- //this -->
</style>
2 in MainActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().hide(); //<< this
setContentView(R.layout.activity_main);
}
-
in manifest vererben Stil:
<activity android:name=".MainActivity" android:theme="@style/generalnotitle">
, wenn ich versucht, alle diese hohen upvoted Antworten zu verwenden, um meine App abgestürzt immer. (Ich glaube, es hat etwas mit dem zu tun? "@Android: style")
Die beste Lösung für mich war die folgende verwenden:
android:theme="@style/Theme.AppCompat.NoActionBar"
Keine Kopf- / Titelleiste mehr. Setzen Sie sich in dem <application>...</application>
oder <activity>...</activity>
je nachdem, ob Sie (nicht) ist es in der gesamten App wollen oder nur eine bestimmte Aktivität.
Erstellen Sie ein Thema, wie unten.
<!-- 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>
Add
<item name="android:windowNoTitle">true</item>
innen AppTheme (styles.xml)
Just Verwendung getActionBar().hide();
in Ihrer Haupttätigkeit onCreate()
Methode.
Sie müssen nur ändern AppTheme
Stil in Style.xml wenn Sie die Definition von DarkActionBar
ersetzen
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
zu NoActionBar
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
die AppTheme definiert in AndroidManifast.xml
Für AppCompat
, folgende Lösung für mich gearbeitet:
Hinzufügen Thema Stil ohne Aktionsleiste in Ihrem styles.xml
und Satz 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>
nun das gleiche Thema Stil, um Ihre Splash-Screen-Aktivität in androidManifest.xml
implementieren
<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>
Hier ist das Ergebnis:
eingebenSie können diesen Code in Ihrer Java-Datei verwenden
Sie diese Zeile hinzufügen, bevor Sie die Ansicht eingestellt oder laden
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
In Ihrer onCreate
Methode Verwenden Sie das folgende Snippet:
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
Fügen von denen sowohl für das Thema, das Sie verwenden:
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
Fügen Sie diese Art Ihre style.xml Datei
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
Nach dieser Referenz dieses Stil Namen in AndroidManifest.xml in perticular Tätigkeit, bei der Sie nicht wollen, titlebar sehen, wie wie unten.
<activity android:name=".youractivityname"
android:theme="@style/AppTheme.NoActionBar">
</activity>
Oder wenn Sie ausblenden möchten / zeigen die Titelleiste an jedem beliebigen Punkt:
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);
}
Ich bin mit einem Support-Widget Toolbar v7. Also, um in der Lage sein, den Titel wir dies schreiben müssen, löschen oder zu verbergen.
Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);
//Remove¡ing title bar
getSupportActionBar().setDisplayShowTitleEnabled(false);
In meinem Fall, wenn Sie Android Studio verwenden 2.1 und Ihre Kompilierung SDK Version 6.0, dann gehen Sie einfach auf Ihre manifest.xml Datei, und ändern Sie den folgenden Code ein:
Hier ist der Code:
<?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>
Dieses Mein Problem wurde gelöst
In Manifest meiner Tätigkeit:
<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>
Im Stil unter "AppTheme" name:
<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>
Um sowohl Titel ausblenden und Aktionsleiste Ich tat dies:
In Aktivitäts-Tag von Manifest:
android:theme="@style/AppTheme.NoActionBar"
In Activity.java vor setContentView:
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
d.h.
// entfernen Titelleiste
this.requestWindowFeature (Window.FEATURE_NO_TITLE);
// Entfernen Benachrichtigungsleiste
.this.getWindow () SetFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
Hinweis : Sie müssen diese Zeilen vor setContentView
halten
Erste Antwort ist amphibole. hier ist meine erklären: hinzufügen:
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
in oncreate () -Methode.
vor:
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
(nicht nur vor setContentView) wenn dies nicht tun wird u forceclose bekommen. +1 diese Antwort.
Ich fand zwei Gründe, warum dieser Fehler auftreten kann.
Ein. Die Window-flags gesetzt sind bereits innen super.onCreate(savedInstanceState);
in diesem Fall möchten Sie möglicherweise verwenden Sie die folgende Reihenfolge der Befehle:
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
Zwei. Haben Sie die Zurück/Oben-Taste innerhalb der TitleBar, was bedeutet, dass die aktuelle Aktivität ist eine hierarchische Kind von einem anderen Aktivität, in diesem Fall möchten Sie vielleicht zu kommentieren oder entfernen Sie diese Zeile code aus dem inneren der onCreate
Methode.
getActionBar().setDisplayHomeAsUpEnabled(true);
Dies ist, wie der vollständige Code aussieht. Beachten Sie die Einfuhr von 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);
}
}
hinzufügen Thema @ style / Theme.AppCompat.Light.NoActionBar in Ihre Aktivitäten auf AndroidManifest.xml wie diese
<activity
android:name=".activities.MainActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
</activity>
Wenn Sie das tun, was die Nutzer Gieren und Doug Paul sagen wir, dann müssen Sie im Kopf haben, dass Fenster Merkmale müssen setContentView Aufruf vor eingestellt werden. Wenn nicht, werden Sie eine Ausnahme erhalten.
add in manifiest Datei,
android:theme="@android:style/Theme.Translucent.NoTitleBar"
Fügen Sie in Ihre Java-Datei folgende Zeile ein,
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
Ähm, können Sie Themen auf einzelne Tätigkeiten gelten in XML wie ohne Titel. Mit anderen Worten, nehmen Sie es Ihre Anwendung Tag aus, die Tag-Deklaration öffnen und es in dem gewünschten Aktivität Tag setzen.