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?

Biji
quelle
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" ... />
Monchote
quelle
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"
....
>
Biji
quelle
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

semih
quelle
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 {
Piotr Müller
quelle
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" 
reza.cse08
quelle
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).

Anfänger
quelle
12
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);
    getSupportActionBar().hide();
}
Rajarshee Mitra
quelle
12

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

style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
Dr. Adams
quelle
7

Sie können das Ausblenden der Aktionsleiste einfach erzwingen:

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

Verwenden Sie einfach Ihr Standardthema.

Trixie Belarmino
quelle
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 :)

Sanket Vetkoli
quelle
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.

Hoang Nguyen Huu
quelle
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">

Shubham Shekhar
quelle
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>
odlh
quelle
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.

Ravi Chandra
quelle
3

Geben Sie diesen Code vor Ihrer onCreateMethode ein setContentView:

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 0);
pavel_coder
quelle
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.

Varun Ved
quelle
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

Rahul
quelle
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.

Raif Deari
quelle
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

Avinash R.
quelle
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" >
Mrad4Tech
quelle
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);
Abhijeet
quelle
1

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

requestWindowFeature(Window.FEATURE_NO_TITLE); 
setContentView(R.layout.activity_main); 
gaurav
quelle
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>
Mohsen Emami
quelle
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.

Lorenzo Barbagli
quelle
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.

Whyoz
quelle
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.

John Melody Melissa
quelle