Frage So blenden Sie die Titelleiste für eine Aktivität in XML mit einem vorhandenen benutzerdefinierten Design ein


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

Verwendung der NoTitleBar Thema als Eltern für meinen Stil würde die Titelleiste von allen meinen Aktivitäten entfernen.

Kann ich irgendwo einen Titel ohne Titel festlegen?


785
2018-04-07 08:48


Ursprung


Antworten:


Mach das in deinem 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 Activity.


995
2018-04-07 09:35



Sie können Ihre ändern AndroidManifest.xml:

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

oder benutzen android:theme="@android:style/Theme.Black.NoTitleBar" wenn Sie keine Fullscreen-Aktivität benötigen.

Hinweis: Wenn Sie zuvor eine Standardansicht verwendet haben, sollten Sie wahrscheinlich auch die Elternklasse ändern AppCompatActivity zu Activity.


484
2017-09-20 14:56



Ich habe jetzt 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 diesen Stil für jede Aktivität festlegen, in der ich die Titelleiste ausblenden möchte, den anwendungsweiten Stil überschreiben und alle anderen Stilinformationen erben, also keine Duplizierung im Stilcode.

Um den Stil auf eine bestimmte Aktivität anzuwenden, öffnen Sie AndroidManifest.xml und füge das folgende Attribut hinzu activity Etikett;

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

359
2018-04-13 08:15



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

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

In deinem Res / Werte Ordner erstellen Sie eine Datei namens styles.xml (Wenn es nicht bereits existiert). Platziere in dieser Datei den folgenden Code:

<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 ein res / Werte-v11 mit einem anderen styles.xml Datei (Dies ist möglicherweise bereits vorhanden). Platziere in dieser Datei den folgenden Code:

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

Wenn Sie auf 4.0+ ausgerichtet sind, erstellen Sie eine res / Werte-v14 Ordner mit noch einem anderen styles.xml Datei (Ja, es kann schon da sein). Platziere in dieser Datei 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 Ihre AndroidManifiest.xml Datei können Sie den Code hinzufügen:

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

zum Aktivitäts-Tag der Aktivität, für die Sie keinen Titel haben möchten, oder zum Anwendungs-Tag, wenn Sie möchten, dass es auf die gesamte Anwendung angewendet wird.

Jetzt erhalten Ihre Benutzer die mit ihrer Geräteversion verknüpften Themen mit dem von Ihnen gewünschten Bildschirmlayout.

P.S. Ändern des Werts in android:theme="@style/Theme.FullScreen" wird den gleichen Effekt haben, aber auch die Benachrichtigungsleiste entfernen.


164
2018-01-02 01:06



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

In dem manifest.xml Datei:

  1. Fügen Sie Folgendes hinzu: 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">
    

98
2018-03-20 11:48



Die richtige Antwort ist wahrscheinlich, ActionbarActivity nicht zu erweitern, sondern nur Activity zu erweitern


wenn Sie noch Actionbar-Aktivität verwenden scheint das zu funktionieren:

@Override
protected void onCreate(Bundle savedInstanceState) {          
    super.onCreate(savedInstanceState);
    getSupportActionBar().hide(); //<< this
    setContentView(R.layout.activity_main);
}

scheint das auch zu funktionieren:

styles.xml:

   <style name="AppBaseTheme" parent="Theme.AppCompat.Light" >
          <item name="android:windowNoTitle">true</item>   <!-- //this -->     
   </style>

Ich könnte tun, wie Scott Biggs schrieb. diese Art von Arbeiten. außer dass es kein Thema gibt. Ich meine, der Hintergrund des Einstellungsmenüs ist transparent:

nur ändern

public class MainActivity extends ActionBarActivity {

zu Aktivität oder FragmentActivity

public class MainActivity extends Activity  {

aber ich könnte es mit Materialdesign gut genug aussehen lassen und nicht entfernen die Aktionsleiste: https://gist.github.com/shimondoodkin/86e56b3351b704a05e53

  1. Stellen Sie das Symbol der Anwendung ein
  2. Legen Sie die Farben der Aktionsleiste entsprechend dem Design fest.
  3. Setzen Sie das Symbol auf das Einstellungsmenü
  4. Fügen Sie weitere Symbole hinzu (Schaltflächen oben)

Es ist zum Beispiel von Material Design Kompatibilität Actionbar Styling.


44
2018-01-16 02:49



Wenn du benutzt this.requestWindowFeature(Window.FEATURE_NO_TITLE) Der Benutzer kann die Titelleiste nur während der Startanimation sehen, wenn die Aktivität beginnt onCreate. Wenn du benutzt @android:style/Theme.Black.NoTitleBar Wie unten gezeigt, wird die Titelleiste während der Startanimation nicht angezeigt.

<activity 
    android:name=".MainActivity" 
    android:label="My App"
    android:theme="@android:style/Theme.Black.NoTitleBar"
    android:screenOrientation="portrait">

Das obige Beispiel überschreibt offensichtlich Ihr vorhandenes Anwendungsthema, wenn Sie ein vorhandenes Thema dann hinzufügen <item name="android:windowNoTitle">true</item> zu ihm.


41
2017-10-17 07:04



Was für mich funktioniert:

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. im Manifest erben den Stil:

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

19
2017-10-23 21:32



Als ich versuchte, all diese hochaufgelösten Antworten zu verwenden, stürzte meine App immer ab. (Ich denke, es hat etwas mit dem "@android: style" zu tun?)

Die beste Lösung für mich war es, Folgendes zu verwenden:

android:theme="@style/Theme.AppCompat.NoActionBar"

Keine Kopf- / Titelleiste mehr. Legen Sie es einfach in die <application>...</application> oder <activity>...</activity> abhängig davon, ob Sie es in der gesamten App oder nur in einer bestimmten Aktivität wünschen.


18
2018-06-10 21:46