So deaktivieren Sie die Aktionsleiste dauerhaft


137

Mit diesem Code kann ich die Aktionsleiste in der Wabe ausblenden:

getActionBar().hide();

Wenn sich die Tastatur öffnet und der Benutzer etwas kopiert, wird die Aktionsleiste erneut angezeigt. Wie kann ich die Aktionsleiste dauerhaft deaktivieren?


2
Gefunden die Antwort hhh <Aktivität android: theme = "@ android: style / Theme.NoTitleBar.Fullscreen" ....>
Biji

1
Wenn Sie versuchen zu kopieren, ist dies keine Aktionsleiste. Fügen Sie die Standardansicht ein.
Padma Kumar

Ja, aber nach dem Ende des Kopierens und Einfügens ist es immer noch nicht verschwunden
Biji

getSupportActionBar (). hide ();
Ameya Salagre

Antworten:


251

Wenn Sie Theme.Holo.Lightdie Theme.Holo.Light.NoActionBarVariante auf Geräten vor Version 3.2 verwenden und verwenden möchten, können Sie diese zu Ihrem styles.xml:

<style name="NoActionBar" parent="@android:style/Theme.Holo.Light">
    <item name="android:windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
</style> 

und legen Sie es dann als Thema Ihrer Aktivität fest:

<activity android:theme="@style/NoActionBar" ... />

8
Dies ist die richtige Antwort. Entfernt keine benutzerdefinierten Themen wie die Lösung von @ Biji.
Phreakhead

1
Haben Sie eine Idee, wie das zusätzliche Flag gesetzt werden soll, um die Benachrichtigungsleiste auszublenden?
jesses.co.tt

1
Ich fand es auch notwendig, von FragmentActivity anstelle von ActionBarActivity zu erben.
Meanman

4
@ jesses.co.tt Die Benachrichtigungsleiste kann entfernt werden mit<item name="android:windowFullscreen">true</item>
Mike Baxter

Das hat bei mir nicht funktioniert. Verwendet das folgende: stackoverflow.com/questions/29790070/…
Christopher Smit

116

Durch Festlegen des Aktivitätsthemas in Manifest,

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

Dies scheint der einzig richtige Weg zu sein, dies zu tun. insb. wenn Sie zufällig ein relatives
Layout

1
Nur so kann ich leider zur Arbeit kommen. Es entfernt benutzerdefinierte Themen, aber es ist wirklich das einzige, was das ActionBarfür mich vollständig entfernt .
RileyE

3
Dies funktioniert nicht mit der Durchsetzung des AppCompat-Themas im neuen ADT. Ich denke nicht, dass es eine gute Lösung ist, dies zu bekämpfen - AppCompat vollständig zu beseitigen! Ich habe @ monchote Ansatz versucht und es funktioniert für mich
Eric

Dies sollte <activity android: theme = "@ android: style / Theme.NoTitleBar"> anstelle von <activity android: theme = "@ android: style / Theme.NoTitleBar.Fullscreen"> sein
Amandeep Rohila

Auf Samsung Galaxy J2 stürzt die App ab, aber auf Nexus 9
Suici Doga


30
<application
    .
    .
    android:theme="@android:style/Theme.Holo.Light.NoActionBar"
    . >

Vielleicht hilft dir das


3
Beachten Sie, dass diese Methode ein Minimum von API-Level 13
Olumide

23

Mit der standardmäßig generierten Aktivitäts-Superklasse von Android Studio ActionBarActivitywird keine Lösung in anderen Antworten verwendet. Um zu lösen, ändern Sie einfach die Oberklasse:

public class xxxActivity extends ActionBarActivity{

zu:

public class xxxActivity extends Activity {

Das hat es für mich getan. Danke für Ihre Hilfe.
j_fulch

17

Wenn Sie Vollbild ohne actionBar und Titel erhalten möchten.

Fügen Sie es in style.xml hinzu

<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.DarkActionBar">
      <item name="windowActionBar">false</item>
      <item name="windowNoTitle">true</item>
      <item name="android:windowFullscreen">true</item>
</style>

und verwenden Sie den Stil unter manifest.xml.

android:theme="@style/AppTheme.NoActionBar" 

12

Der beste Weg, der benutzerdefinierte Themen und keine Aktionsleiste enthält, besteht darin, eine SuperClass für alle Aktivitäten in meinem Projekt zu erstellen und in onCreate () die folgende Codezeile aufzurufen:

this.requestWindowFeature(Window.FEATURE_NO_TITLE);

Es funktioniert immer für mich. Das einzige Problem bei diesem Ansatz ist, dass beim Starten der App die Aktionsleiste für den Bruchteil einer Sekunde angezeigt wird (nicht die Aktivität, die gesamte App).


12
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);
    getSupportActionBar().hide();
}

12

Gehen Sie zu styles.xml. Ändern Sie diese DarkActionBar in NoActionBar

style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

7

Sie können das Ausblenden der Aktionsleiste einfach erzwingen:

ActionBar  actionbar = getSupportActionBar();
actionBar.hide();

Verwenden Sie einfach Ihr Standardthema.


7

Wenn Sie nur ein Thema ohne Aktionsleiste möchten, können Sie die Variante 'NoActionBar' verwenden, z. wenn Ihr Basisthema wie folgt ist

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

dann kannst du verwenden

<style name="AppThemeNoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

Wenn Sie jedoch die Eigenschaften Ihres Hauptthemas, z. B. AppTheme, beibehalten möchten, können Sie wie folgt vorgehen

<style name="AppThemeNoActionBar" parent="AppTheme">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

Sie können auf diese Weise alle Eigenschaften Ihres Basisthemas beibehalten und müssen sie nicht explizit zu Ihrem NoActionBar-Design hinzufügen :)


6

Verwenden Sie kein Holo-Thema und die Aktionsleiste verschwindet. Dieser Code funktioniert für mich unter API 8+ mit Unterstützung für lib v7:

<style name="NoActionBar" parent="@style/Theme.AppCompat.Light">
<item name="android:windowNoTitle">true</item>
</style>

Legen Sie dieses Thema für Ihre Aktivität fest:

<activity android:theme="@style/NoActionBar" ... />

und in Ihrer Aktivitätsklasse.

Es funktioniert auch, wenn es ActionBarActivity erweitert.


6

Unter res -> values ​​-> styles.xml

Veränderung

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

Zu

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">


5

Hier ist eine schnelle Lösung.

Sie finden styles.xml und ändern das Basisanwendungsthema in "Theme.AppCompat.NoActionBar" (siehe unten).

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <!-- Customize your theme here. -->
</style>

3

Im Folgenden finden Sie die Schritte zum dauerhaften Ausblenden der Aktionsleiste:

  1. Öffnen Sie die Datei app / res / values ​​/ styles.xml.
  2. Suchen Sie nach dem Stilelement "apptheme". Sollte ähnlich aussehen wie<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> .
  3. Ersetzen Sie nun das übergeordnete Element durch ein anderes Thema, dessen Name "NoActionBar" enthält.

    ein. Sie können auch überprüfen, wie ein Thema aussieht, indem Sie zur Registerkarte "Design" von activity_main.xml wechseln und dann jedes in der Themen-Dropdown-Liste der Benutzeroberfläche bereitgestellte Thema ausprobieren.

  4. Wenn Ihr MainActivity erstreckt AppCompatActivity , stellen Sie sicher , dass Sie ein AppCompat Thema verwenden.


3

Geben Sie diesen Code vor Ihrer onCreateMethode ein setContentView:

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 0);

3

Ich möchte hierzu eher einen Designer-Ansatz veröffentlichen, der das Design von Ihrer Geschäftslogik trennt:

Schritt 1. Erstellen Sie einen neuen Stil in (res-> values-> styles.xml): Grundsätzlich handelt es sich um eine Kopie Ihres Gesamtschemas mit einem anderen übergeordneten Element - parent = "Theme.AppCompat.Light.NoActionBar"

<!-- custom application theme. -->
    <style name="MarkitTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimary</item>
        <item name="colorAccent">@color/colorAccent</item>

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

Schritt 2: Fügen Sie in Ihrer AndroidManifest.xml dieses Thema zu der gewünschten Aktivität hinzu: z. B. Ich möchte meine Hauptaktivität ohne Aktionsleiste, also fügen Sie dies wie folgt hinzu:

<activity android:name=".MainActivity"
            android:theme="@style/MarkitTheme">

Dies ist die beste Lösung für mich, nachdem ich viele Dinge ausprobiert habe.


2

Fügen Sie in der Funktion onCreate den folgenden Code hinzu

ActionBar actionBar = getSupportActionBar();
actionBar.hide();

und importiere einfach android.support.v7.app.ActionBar


2

Stellen Sie sicher, dass Sie ein neues Thema erstellen, indem Sie den Namen des Standardthemas in der styles.xmlDatei in Folgendes ändern :

 <style name="MyTheme" parent="android:Theme.Material.Light.NoActionBar">

und dann ändern Sie das Thema von der Dropdown-Liste unter Ihrem main_activity.xmlzu dem, was Sie Ihr Thema genannt haben.


1

Eine weitere interessante Lösung, bei der Sie den ViewPager beim Entfernen der Aktionsleiste beibehalten möchten, besteht darin, einen Stil als Show zu verwenden

<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:windowActionBarOverlay">true</item>
    <item name="android:actionBarStyle">@style/NoActionBarStyle</item>
    <item name="android:windowContentOverlay">@null</item>
</style>
<style name="NoActionBarStyle" parent="android:Widget.Holo.ActionBar">
    <item name="android:backgroundSplit">@null</item>
    <item name="android:displayOptions"></item>
</style>

Auf diese Weise zeigen die meisten Dialer-Anwendungen in Android den ViewPager ohne die Aktionsleiste an.

Ref: https://github.com/CyanogenMod/android_packages_apps_Dialer


Diese Lösung hinterlässt oben einen weißen Bereich.
Felipe FMMobile

Dies funktionierte für mich unter Android 2.3 mit dem Theme.AppCompat.Light, wenn ich das übergeordnete NoActionBarStyle in @ style / Widget.AppCompat.ActionBar.TabBar (ich verwende einen ViewPager)
geändert habe

1

Versuchen Sie dies in Ihrem Manifist

 <activity
        android:name=".MainActivity"
        android:theme="@android:style/Theme.Holo.NoActionBar"
        android:label="@string/app_name" >

1
  protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   android.support.v7.app.ActionBar actionBar = getSupportActionBar();
    if (actionBar != null) {
        actionBar.hide();
    }
    setContentView(R.layout.activity_main);

1

Es gibt zwei Möglichkeiten, um ActionBarin Android zu deaktivieren .

requestWindowFeature(Window.FEATURE_NO_TITLE); 
setContentView(R.layout.activity_main); 

1

Verwenden Sie dies in der styles.xmlDatei:


<style name="MyTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowActionBar">false</item>
        <item name="android:windowNoTitle">true</item>

0

Ich benutze diese Lösung:

im Manifest innerhalb Ihres Aktivitäts-Tags:

android:label="@string/empty_string"

und in strings.xml:

<string name="empty_string">""</string>

Auf diese Weise behalten Sie die Aktionsleiste (oder Symbolleiste) mit dem Titel bei, aber wenn Aktivität erstellt wird, ist der Titel automatisch leer.


0

Seltsamerweise funktionierte keines davon für mich, als ich auf einem Nexus 7 mit 4.4.2 (API 19) aufbaute. Zum größten Teil zumindest mit der neuesten Version von Android Studio (1.2.1.1) nach dem Erstellen einer leeren Aktivitäts-App:

android: theme = "@ style / AppTheme"

befindet sich im Anwendungselement, nicht im Aktivitätselement. Wenn ich den obigen Code entfernt oder versucht habe, ihn zu ändern in:

android: theme = "@ android: style / Theme.Holo.Light.NoActionBar"

Die App wird nicht ausgeführt. Wenn Ihnen dies passiert, gehen Sie einfach in Ihre Datei styles.xml (res> values> styles.xml) und fügen Sie die .NoTitleBar wie folgt am Ende des übergeordneten Elements hinzu:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"></style>

Es sind keine Änderungen an der AndroidManifest-Datei erforderlich.


0

In Ihrem activity_main.xmlkönnen Sie von dort in der Zeile anpassen:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
.......
    android:theme="@style/Theme.Design.Light.NoActionBar"
.......    
">

Manchmal, wenn Sie solche Dinge sehen können, klicken Sie hier solche sehen können . Sie können hier das Thema "noActionBar" auswählen.

Hoffe ich habe dir geholfen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.