Android-Aktivität als Dialog, jedoch ohne Titelleiste


72

Ich habe eine Aktivität mit folgendem Thema:

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

Es erscheint jedoch eine Titelleiste im Aktivitätsdialog, die den wenig verfügbaren Speicherplatz belegt. Wie kann ich es entfernen?


1
Ich bin mir nicht sicher was du meinst. Kannst du einen Screenshot davon posten?
Lukas Knuth

Antworten:


145

Versuchen Sie , requestWindowFeature(Window.FEATURE_NO_TITLE);in onCreate. Dies muss unmittelbar nach dem Anruf super.onCreateund kurz zuvor erfolgen setContentView.


1
Haben Sie dies mit 2.2 versucht? Ich bekomme eine Caused by: android.util.AndroidRuntimeException: You cannot combine custom titles with other title featuresAusnahme, aber vielleicht mache ich etwas anderes falsch.
Eleni

Sie verwenden wahrscheinlich eine andere Fenstertitelfunktion im Code oder ein Thema, das andere Dinge mit dem Titel tut.
Femi

14
Das wird nicht funktionieren AppCompactActivity. Sie sollten die Antwort @zackygaurav hinzufügen, damit der Benutzer, der die verwendet AppCompatActivity, die richtigen Informationen erhält.
Moinkhan

@ Moinkhan, wie würde es für 'AppCompactActivity' funktionieren?
Yousuf Sohail

131

Für diejenigen, die verwenden AppCompatActivity, funktionieren die obigen Antworten möglicherweise nicht.

Versuche dies

supportRequestWindowFeature(Window.FEATURE_NO_TITLE);

unmittelbar bevor setContentView(R.layout.MyDialogActivity);


6
Genius! Vielen Dank!
Murphybro2

7
Oder fügen Sie <item name="windowNoTitle">true</item>Ihrem Stil hinzu, dh ohne das Android- Präfix
Rehan

1
Nur noch eine Sache: Nicht ConstraintLayoutim Stammverzeichnis Ihres Layouts verwenden, da Ihre Aktivität sonst nicht auf dem Bildschirm angezeigt wird.
Van

111

Sie können Ihr eigenes Thema definieren:

<style name="NoTitleDialog" parent="@android:style/Theme.Dialog">
    <item name="android:windowNoTitle">true</item>
</style>

(Tipp des Hutes an @Rehan) Wenn Sie die Kompatibilitätsbibliothek verwenden, sollten Sie ein AppCompatübergeordnetes Thema auswählen und das android:Präfix weglassen . Zum Beispiel:

<style name="NoTitleDialog" parent="@style/Theme.AppCompat.Dialog">
    <item name="windowNoTitle">true</item>
</style>

4
Danke dafür. Es ist wahrscheinlich ein besserer Ansatz, aber am Ende habe ich requestWindowFeature verwendet. Trotzdem danke :)
Schatten

7
Einfach hinzufügen: Verwenden Sie es ohne Android- Präfix, AppCompatActivityum <item name="windowNoTitle">true</item>es Ihrem Stil hinzuzufügen .
Rehan

Ich habe in vielen Quellen ein gutes Konzept gefunden, aber keiner von ihnen spricht über AppCompat und keinen Appcompat, danke
Somwang Souksavatd

30

Wenn Sie verwenden, AppCompatActivityin dem Sie Theme.AppCompat.xxxfür alles verwendet werden müssen, können Sie den Dialogtitel oder die Aktionsleiste entfernen, styles.xmlindem Sie Folgendes verwenden:

<style name="Theme.MyDialog" parent="Theme.AppCompat.Light.Dialog">
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>

Beachten Sie die Verwendung von name="windowActionBar"anstelle von name="android:windowActionBar".


Ich habe hilflos versucht, AppCompat UND den Android-Namespace in der windowNoTitle-Deklaration zu verwenden. VIELEN DANK!
Romulof

7

Wenn Sie AppCompatActivity verwenden, funktioniert requestWindowFeature (Window.FEATURE_NO_TITLE) nicht.

Dazu können Sie ein benutzerdefiniertes Thema in values ​​/ style.xml wie folgt erstellen:

   <style name="NoTitleDialog" parent="Theme.AppCompat.Dialog.Alert">
        <item name="windowNoTitle">true</item>
    </style>

Bitte beachten Sie, dass der Artikelname: "windowNoTitle" nicht der Artikelname: "android: windowNoTitle"

Wenden Sie in menifest.xml dieses benutzerdefinierte Thema als an

<activity android:name=".activity.YourActivity"
            android:theme="@style/NoTitleDialog"/>

Oder Sie können getSupportActionBar (). hide () verwenden , um die Aktionsleiste programmgesteuert auszublenden.


5

Dieser arbeitete für mich für Appcompat.

<style name="DialogTheme" parent="Theme.AppCompat.Light.Dialog">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

2

Dieser hat für mich gearbeitet.

Ich konnte den Titel deaktivieren

style.xml

<style name="AppDialogScreenTheme" parent="Base.Theme.MaterialComponents.Light.Dialog">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

AndroidManifest.xml

  <activity
        android:name=".MyActivity"
        android:theme="@style/AppDialogScreenTheme">

  </activity>

1

Für Dialoge können Sie Folgendes tun:

Dialog dialog = new Dialog(context);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

4
Die Frage bezieht sich auf eine Aktivität, die als Dialog und nicht als Dialog angezeigt wird.
Camille Sévigny

0

Das funktioniert bei mir, möge es auch jemandem helfen:

style.xml

<style name="NoTitleActivityDialog" parent="Theme.AppCompat.Light.Dialog.Alert">
    <item name="windowNoTitle">true</item>
</style>

AndroidManifest.xml

   <activity
        android:name=".DialogActivity"
        android:theme="@style/NoTitleActivityDialog"/>
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.