Ich habe ein seltsames Verhalten, dessen Quelle ich nicht genau bestimmen kann.
Ich habe meine App mit dem Klassiker
requestWindowFeature(Window.FEATURE_NO_TITLE);
um die Titel- / Statusleiste zu entfernen.
Ich erstelle dann ein Dialogfeld, in dem der Benutzer Informationen (Name usw.) eingeben kann.
Mit einer physischen Tastatur kein Problem, aber wenn ich die virtuelle Tastatur verwende, habe ich ein seltsames Verhalten:
Jedes Mal, wenn ich eine Taste auf der virtuellen Tastatur drücke, wird die Titel- / Statusleiste erneut angezeigt, wobei das gesamte Tastaturlayout verschoben wird, und verschwindet dann wieder (genau wie die Animation beim Starten der Anwendung).
Hier ist ein Code:
dialog = new Dialog(context);
dialog.setContentView(R.layout.logindialog);
dialog.setTitle("Login:");
WindowManager.LayoutParams a = dialog.getWindow().getAttributes();
// dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
a.dimAmount = 0;
dialog.getWindow().setAttributes(a);
dialog.setCancelable(true);
dialog.getWindow().setLayout(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
und dann
dialog.show();
Ich habe es versucht
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
aber es stürzt meine App ab.
Hier ist die XML
<TextView android:id="@+id/LoginText"
android:gravity="fill"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Login:">
</TextView>
<EditText android:id="@+id/LoginEdit"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="jason"
android:layout_width="200sp"/>
<TextView android:id="@+id/PasswordText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Password:">
</TextView>
<EditText android:id="@+id/PasswordEdit"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="welcome"
android:layout_width="200sp"
android:password="true"/>
<LinearLayout
android:id="@+id/test2"
android:gravity="center_horizontal"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button android:id="@+id/LoginButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="Login" />
<Button android:id="@+id/CreateButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="Create" />
<Button android:id="@+id/CancelLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="Cancel" />
</LinearLayout>/>
Antworten:
verwenden,
quelle
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
innenonCreateView
.dialog.supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
Erstellen Sie einen neuen Stil in styles.xml
Fügen Sie dies dann Ihrem Manifest hinzu:
quelle
Alle oben genannten Antworten funktionieren bei AppCompatDialog nicht
Wenn Sie AppCompatDialog verwenden, versuchen Sie dies
Wichtiger Hinweis: Legen Sie dies fest, bevor Sie setContentView aufrufen.
quelle
Erstellen Sie Ihr XML, das hier im Dialogfeld angezeigt wird. Es ist activity_no_title_dialog
quelle
Sie können das Thema auch in der Android-Manifestdatei definieren, damit die Titelleiste nicht angezeigt wird.
Sie definieren nur ein Thema
android:theme="@android:style/Theme.Light.NoTitleBar"
in einer Aktivität, in der die Titelleiste nicht angezeigt werden sollBeispiel:-
quelle
Wenn Sie eine benutzerdefinierte Ansicht verwenden, müssen Sie die Fensterfunktion anfordern, bevor Sie eine Inhaltsansicht wie diese hinzufügen
quelle
Verwenden Sie den folgenden Code vor setcontentview: -
Hinweis: - Der obige Code muss oben verwendet werden
dialog.setContentView(R.layout.custom_dialog);
Verwenden Sie in XML ein Thema
auch styles.xml:
Und dann:
quelle
Ich bin ein Android-Neuling und bin auf diese Frage gestoßen, als ich versucht habe, eine Titelleiste loszuwerden.
Ich verwende eine Aktivität und zeige sie als Dialog an. Ich habe mich mit Themen beschäftigt und bin auf ein nützliches Standardthema gestoßen.
Hier ist der Code von mir
AndroidManifest.xml
, den ich verwendet habe, als die Titelleiste angezeigt wurde:Hier ist die Änderung, die mir mein gewünschtes Ergebnis gebracht hat:
Wie gesagt, ich bin noch neu in Android, daher kann dies unerwünschte Nebenwirkungen haben, aber es scheint mir das gewünschte Ergebnis gebracht zu haben, nämlich nur die Titelleiste aus dem Dialogfeld zu entfernen.
quelle
Ich benutze die nächste Variante:
Aktivität meines benutzerdefinierten Dialogs:
activity_alert_dialogue.xml:
Manifest:
Stil:
quelle
Bei der nächsten Variante habe ich keine Reaktion:
Also versuche ich als nächstes zu verwenden:
Diese Variante funktioniert hervorragend.
quelle
Das hat bei mir funktioniert.
quelle
Sie können diese einfache Popup-Bibliothek für Android-Dialoge ausprobieren . Es ist sehr einfach für Ihre Aktivität zu verwenden.
Wenn Sie auf die Schaltfläche "Senden" klicken, versuchen Sie, den folgenden Code zu verwenden, nachdem Sie die obige Bibliothek in Ihren Code aufgenommen haben
Fügen Sie eine Zeile in Ihren Gradle ein und Sie können loslegen
quelle
dialog1.requestWindowFeature (Window.FEATURE_NO_TITLE);
quelle