941 Stimmen

Ausblenden der Titelleiste für eine Aktivität in XML mit vorhandenem benutzerdefinierten Thema

Ich möchte die Titelleiste für einige meiner Aktivitäten ausblenden. Das Problem ist, dass ich einen Stil auf alle meine Aktivitäten angewendet habe, daher kann ich das Thema nicht einfach auf @android:style/Theme.NoTitleBar .

Die Verwendung des NoTitleBar Thema als übergeordnetes Element für meinen Stil würde die Titelleiste aus allen meinen Aktivitäten entfernen.

Kann ich irgendwo ein Element ohne Titel einstellen?

1094voto

YaW Punkte 12112

Tun Sie dies in Ihrem 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 .

8 Stimmen

Tolle Antwort. Sie müssen nicht beides tun, aber das Entfernen der Benachrichtigungsleiste kann zu viel des Guten sein.

214 Stimmen

Stellen Sie sicher, dass es avant der Aufruf von setContentView(R.id.x), sonst stürzt er ab. Der Grund war mir nicht sofort klar. 08-13 12:47:33.561 E/AndroidRuntime( 9125): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp/com.myapp.SplashActivity}: Android.util.AndroidRuntimeException: requestFeature() muss vor dem Hinzufügen von Inhalten aufgerufen werden

9 Stimmen

Sie sollten wirklich erwähnen, dass bei der Verwendung von requestWindowFeature() ein force-close auftritt, wenn Sie diese Zeile nach dem Hinzufügen von 何れも Inhalt. Nebenbei bemerkt ist die XML-Methode viel sicherer und trennt auch die Seitenstruktur von Ihrem Code (der die gesamte Zweck der XMLs in erster Linie).

542voto

Redax Punkte 9171

Sie können Ihre AndroidManifest.xml :

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

oder verwenden android:theme="@android:style/Theme.Black.NoTitleBar" wenn Sie keine bildschirmfüllende Aktivität benötigen.

Note : Wenn Sie zuvor eine 'Standard'-Ansicht verwendet haben, sollten Sie wahrscheinlich auch die übergeordnete Klasse von AppCompatActivity a Activity .

0 Stimmen

Wie kommt es, dass dieses Thema in meinem Projekt nicht vorhanden ist? Die Code-Vervollständigung zeigt @Android nicht an.

1 Stimmen

Ich weiß nicht, warum. Ich habe nur das Standardprojekt verwendet und eine Aktivität hinzugefügt. Die automatische Vervollständigung funktioniert nicht, aber das Thema ist vorhanden.

1 Stimmen

Es gibt viele Stellen, an denen die Code-Vervollständigung nicht funktioniert. Sie wurde in den letzten (Juni 2011) Updates der Android Dev Tools stark verbessert, aber es gibt noch viel zu tun!

405voto

Janusz Punkte 181894

Ich habe nun Folgendes getan.

Ich habe einen Stil deklariert, der alles von meinem allgemeinen Stil erbt und dann die titleBar deaktiviert.

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

Jetzt kann ich diese Formatvorlage für jede Aktivität festlegen, in der ich die Titelleiste ausblenden möchte, indem ich die anwendungsweite Formatvorlage überschreibe und alle anderen Formatvorlagen erbe, so dass keine Duplizierung im Formatvorlagencode erfolgt.

Um den Stil auf eine bestimmte Aktivität anzuwenden, öffnen Sie AndroidManifest.xml und fügen Sie das folgende Attribut zu der activity Tag;

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

0 Stimmen

Ich erhalte -> Fehler beim Abrufen des übergeordneten Elements für das Element: No resource found that matches the given name 'general' when trying this css. Können Sie mir einen Hinweis geben, warum das so ist?

14 Stimmen

Ich glaube, er hat einen Stil mit der Bezeichnung "General" geschaffen und erweitert ihn gerade. Entfernen Sie ihn einfach für Ihren eigenen Gebrauch.

7 Stimmen

+1 für die Beantwortung der Frage, anstatt nur den offensichtlichsten Weg anzugeben, um ähnliche Ergebnisse zu erzielen, wie es die meisten anderen Antworten auf diese Frage tun. Es ist nur schade, dass du deine eigene Frage beantworten musstest, um eine genaue Antwort zu erhalten...

169voto

Devin Stewart Punkte 2966

Ich mag nicht die this.requestWindowFeature(Window.FEATURE_NO_TITLE); weil die Titelleiste kurz erscheint und dann wieder verschwindet.

Ich mag auch nicht die android:theme="@android:style/Theme.NoTitleBar" weil ich alle Holo-Änderungen von 3.0+ verloren habe, an die sich die Nutzer der neuen Geräte gewöhnt haben. So bin ich auf diese Lösung gestoßen.

In Ihrem res/values Ordner eine Datei namens styles.xml (Falls sie nicht schon existiert). Fügen Sie 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 erstellen Sie eine res/values-v11 mit einem anderen styles.xml Datei (auch diese kann bereits existieren). In diese Datei fügen Sie 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 auf 4.0+ abzielen, erstellen Sie eine res/values-v14 Ordner mit einem weiteren styles.xml Datei (Ja, sie kann bereits vorhanden sein). In dieser Datei platzieren Sie den folgenden Code:

<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>

Wenn Sie alle diese Dateien erstellt haben, öffnen Sie Ihr AndroidManifiest.xml Datei können Sie den Code hinzufügen:

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

an das Aktivitäts-Tag der Aktivität, für die Sie keinen Titel wünschen, oder an das Anwendungs-Tag, wenn Sie möchten, dass er für die gesamte Anwendung gilt.

Jetzt erhalten Ihre Nutzer die Themen, die ihrer Geräteversion entsprechen, mit dem von Ihnen gewünschten Bildschirmlayout.

P.S. Ändern Sie den Wert in android:theme="@style/Theme.FullScreen" hat den gleichen Effekt, entfernt aber auch die Benachrichtigungsleiste.

0 Stimmen

Sie..dies funktioniert gut für das, was Sie gesagt haben, aber die Bilder bekam schrill, wenn die Themen zu ändern. Also was zu tun ist?

1 Stimmen

@arun - Ich habe mit dieser Methode keine Bildprobleme gehabt. Was meinen Sie mit "schrill"?

0 Stimmen

@DevinStewart ...Entschuldigung. Ich habe dieses Problem gelöst...Ihre Antwort war sehr hilfreich.... Danke

109voto

whiteShadow Punkte 1162

Die Titelleiste kann auf zwei Arten entfernt werden, wie auf der Android-Entwicklerseite erwähnt:

In der manifest.xml Datei:

  1. Fügen Sie Folgendes hinzu application wenn Sie sie für alle Aktivitäten in einer App entfernen möchten:

    <application android:theme="@android:style/Theme.Black.NoTitleBar">
  2. Oder für eine bestimmte Tätigkeit:

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

16 Stimmen

Es ist besser, Android:theme="@Android:style/Theme.DeviceDefault.NoActionBar.Fullscreen" anstelle von black.theme zu verwenden. Lassen Sie das Gerät das Thema behandeln. aber danke, ich habe Ihren Ansatz verwendet

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X