Wie stelle ich den Dialog so ein, dass er im Vollbildmodus angezeigt wird? [geschlossen]


129

Ich habe eine GridView und möchte eine Implementierung eines Dialogfelds erstellen, in dem das von mir ausgewählte Bild im Vollbildmodus angezeigt werden soll.

Wie kann ich den Dialog im Vollbildmodus anzeigen lassen? Vielen Dank!


2
Wenn Sie einen VOLLBILDSCHIRM verwenden möchten, verwenden Sie Dialogdie Standardeinstellung ACTION_VIEW Intentfür Bilddateien.
Will Tate

Entschuldigung, ich meine fast Vollbild oder Vollbild
user790156

3
In Verbindung mit der Antwort auf willytate, wenn Sie einen Dialog führen müssen, verwenden Sie android.R.style.Theme_Translucent_NoTitleBar_Fullscreen im Thema
ingsaurabh


3
@ MartinPfeffer Ich habe auch einen Vorschlag für zukünftige Benutzer, aber Frage geschlossen Andrew Barber ist nicht aus der Android-Community. Dies ist wirklich eine einfache Frage, die neue Android-Entwickler immer neugierig machen. Diese Frage sollte wieder offen sein für bessere Antworten und zukünftige Benutzer
Abhishek Singh

Antworten:


228

Versuchen

Dialog dialog=new Dialog(this,android.R.style.Theme.Black.NoTitleBar.Fullscreen)

29
Damit dies für mich funktioniert, musste ich android.R.style.Theme_Black_NoTitleBar_Fullscreen
Ben Clayton

4
Call requires API level 11
Luis A. Florit

1
@ LuisA.Florit versuchen Theme_Black_NoTitleBar_Fullscreen
Felipe Caldas

21
Was ist mit Vollbild mit einer Titelleiste?
Heath Borders

1
Wenn ich dies mache (mit DialogFragment), sehe ich, dass die Farbe der Statusleiste durch den Dialog gelöscht wird. Der gesamte Bildschirm ist die Hintergrundfarbe des Dialogs. Kennt jemand eine Problemumgehung? Ich habe versucht, die StatusBarColor des Dialogfensters ohne Wirkung festzulegen. PS: Die Farbe der Navigationsleiste wird ebenfalls getötet.
AndroidGy

83

Basierend auf diesem Link lautet die richtige Antwort (die ich selbst getestet habe):

Fügen Sie diesen Code in den Konstruktor oder die onCreate()Methode des Dialogfelds ein:

getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT,
                WindowManager.LayoutParams.MATCH_PARENT);

Stellen Sie außerdem den Stil des Dialogfelds auf Folgendes ein:

<style name="full_screen_dialog">
    <item name="android:windowFrame">@null</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
</style>

Dies könnte über den Konstruktor erreicht werden, zum Beispiel:

public FullScreenDialog(Context context)
{
  super(context, R.style.full_screen_dialog);
  ...

BEARBEITEN: Eine Alternative zu all dem wäre, den Stil auf android.R.style.Theme zu setzen und fertig.


55

Der einfachste Weg, den ich gefunden habe

Dialog dialog=new Dialog(this,android.R.style.Theme_Black_NoTitleBar_Fullscreen);
        dialog.setContentView(R.layout.frame_help);
        dialog.show();

1
danke das war wirklich der einfachste weg!
CommonSenseCode

1
Lief wie am Schnürchen!
Link 88

1
Toll. Funktioniert perfekt
Jevgenij Kononov

Dies ist perfekt! Sollte die akzeptierte Lösung sein.
AmeyaB

Hintergrundfarbe kann nicht geändert werden, immer noch schwarz
Jemshit Iskenderov

42

BEARBEITEN Bis StackOverflow es uns ermöglicht, unsere Antworten zu versionieren, ist dies eine Antwort, die für Android 3 und niedriger funktioniert. Bitte stimmen Sie es nicht ab, da es jetzt nicht für Sie funktioniert, da es definitiv mit älteren Android-Versionen funktioniert.


Sie sollten Ihrer onCreateDialog()Methode nur eine Zeile hinzufügen müssen :

@Override
protected Dialog onCreateDialog(int id) {
    //all other dialog stuff (which dialog to display)

    //this line is what you need:
    dialog.getWindow().setFlags(LayoutParams.FLAG_FULLSCREEN, LayoutParams.FLAG_FULLSCREEN);

    return dialog;
}

1
Warum ich FLAG_FULLSCREEN nicht verwenden kann
user790156

2
Nun, das ist schwer zu sagen - Haben Sie LayoutParams importiert? Ist Ihre Layout-XML entweder auf fill_parent oder match_parent eingestellt?
Caspar Harmer

12
Verwenden Sie android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN
Derzu

1
FEHLER:FLAG_FULLSCREEN cannot be resolved or is not a field
Luis A. Florit

1
Es ist möglich, dass diese Antwort veraltet ist - sie funktioniert möglicherweise nicht für Android 4.0 und höher.
Caspar Harmer

34
dialog = new Dialog(getActivity(),android.R.style.Theme_Translucent_NoTitleBar);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setContentView(R.layout.loading_screen);
    Window window = dialog.getWindow();
    WindowManager.LayoutParams wlp = window.getAttributes();

    wlp.gravity = Gravity.CENTER;
    wlp.flags &= ~WindowManager.LayoutParams.FLAG_BLUR_BEHIND;
    window.setAttributes(wlp);
    dialog.getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
    dialog.show();

Versuche dies.


1
MATCH_PARENT hat für mich gearbeitet.
Ray
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.