So blenden Sie die Titelleiste für eine Tätigkeit in XML-Daten mit vorhandenen benutzerdefinierten Thema

StackOverflow https://stackoverflow.com/questions/2591036

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?

War es hilfreich?

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:

  1. 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">
    
  2. 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

  1. set Symbol der Anwendung
  2. set Farben Aktionsleiste Design entsprechen.
  3. set Symbol Einstellmenü
  4. 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);
}
  1. 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:

 image description hier

eingeben

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

Und hier ist das Snip-Shooting (siehe Highlight-Code): eingeben Bild Beschreibung hier

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top