Jak ustawić okno dialogowe, aby wyświetlało się na pełnym ekranie? [Zamknięte]


135

Mam widok GridView i chcę wdrożyć okno dialogowe, w którym wybrany przeze mnie obraz powinien być wyświetlany na pełnym ekranie.

więc jak mogę sprawić, by okno dialogowe było wyświetlane w trybie pełnoekranowym? dzięki!


2
Jeśli chcesz używać PEŁNEGO EKRANU Dialog, dlaczego nie użyć domyślnej wartości ACTION_VIEW Intentdla plików graficznych?
Will Tate

przepraszam, mam na myśli prawie pełny ekran lub pełny obraz
user790156

3
W połączeniu z odpowiedzią willytate, jeśli musisz dialogować, użyj android.R.style.Theme_Translucent_NoTitleBar_Fullscreen w motywie
ingsaurabh


3
@MartinPfeffer Mam również sugestię dla przyszłego użytkownika, ale pytanie zamknięte Andrew Barber nie pochodzi ze społeczności Androida. to jest naprawdę proste pytanie, nowi programiści Androida zawsze są tego ciekawi. to pytanie powinno być ponownie otwarte dla lepszych odpowiedzi i przyszłych użytkowników
Abhishek Singh

Odpowiedzi:


239

próbować

Dialog dialog=new Dialog(this,android.R.style.Theme_Black_NoTitleBar_Fullscreen)

31
Aby to zadziałało, musiałem użyć android.R.style.Theme_Black_NoTitleBar_Fullscreen
Ben Clayton

4
Call requires API level 11
Luis A. Florit

1
@ LuisA.Florit wypróbuj Theme_Black_NoTitleBar_Fullscreen
Felipe Caldas

22
A co z pełnym ekranem z paskiem tytułowym?
Heath Borders

1
Kiedy robię to (używając DialogFragment), widzę, że kolor paska stanu jest zabijany przez okno dialogowe, a cały ekran ma kolor tła okna. Czy ktoś wie o obejściu? Próbowałem ustawić statusBarColor okna dialogowego, ale bez skutku. PS: kolor paska nawigacji również zostaje zabity.
androidguy

86

na podstawie tego linku prawidłowa odpowiedź (którą sam przetestowałem) to:

umieść ten kod w konstruktorze lub onCreate()metodzie okna dialogowego:

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

dodatkowo ustaw styl okna dialogowego na:

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

można to osiągnąć za pomocą konstruktora, na przykład:

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

EDYCJA: alternatywą dla wszystkich powyższych byłoby ustawienie stylu na android.R.style.ThemeOverlayi to wszystko.


57

Najłatwiejszy sposób, jaki znalazłem

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

nie mogę zmienić koloru tła, nadal czarny
Jemshit Iskenderov

43

EDYTUJ Do czasu, gdy StackOverflow pozwoli nam na wersję naszych odpowiedzi, jest to odpowiedź, która działa na Androida 3 i starszych. Nie oceniaj go negatywnie, ponieważ teraz nie działa, ponieważ zdecydowanie działa ze starszymi wersjami Androida.


Powinieneś dodać tylko jedną linię do swojej onCreateDialog()metody:

@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
Dlaczego nie mogę używać FLAG_FULLSCREEN
user790156,

2
Cóż, trudno powiedzieć - czy zaimportowałeś LayoutParams? Czy Twój plik XML układu jest ustawiony na fill_parent lub match_parent?
Caspar Harmer

12
użyj android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN
Derzu.

1
BŁĄD:FLAG_FULLSCREEN cannot be resolved or is not a field
Luis A. Florit

1
Możliwe, że ta odpowiedź staje się nieaktualna - może nie działać na Androidzie 4.0 i nowszych.
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();

Spróbuj tego.


1
MATCH_PARENT pracował dla mnie.
Ray
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.