Comment définir la boîte de dialogue pour qu'elle s'affiche en plein écran? [fermé]

129

J'ai un GridView et je veux faire une implémentation d'un dialogue, sur lequel l'image que j'ai sélectionnée doit s'afficher en plein écran.

Alors, comment puis-je faire en sorte que la boîte de dialogue s'affiche en mode plein écran? Merci!

user790156
la source
2
Si vous souhaitez utiliser un FULL SCREEN Dialog, pourquoi ne pas simplement utiliser la valeur ACTION_VIEW Intentpar défaut pour les fichiers image?
Will Tate
désolé, je veux dire presque plein écran ou plein écran
user790156
3
En conjonction avec la réponse à willytate si vous devez dialoguer, utilisez android.R.style.Theme_Translucent_NoTitleBar_Fullscreen dans le thème
ingsaurabh
Cela pourrait aider stackoverflow.com/a/2700683/1118886
Sheraz Ahmad Khilji
3
@MartinPfeffer j'ai aussi une suggestion pour le futur utilisateur mais la question est close Andrew Barber n'est pas de la communauté Android. c'est vraiment une question simple pour les nouveaux développeurs Android toujours curieux à ce sujet. cette question devrait être ouverte à nouveau pour de meilleures réponses et pour les futurs utilisateurs
Abhishek Singh

Réponses:

228

essayer

Dialog dialog=new Dialog(this,android.R.style.Theme.Black.NoTitleBar.Fullscreen)
Ahmed Salem
la source
29
Pour que cela fonctionne pour moi, je devais utiliser android.R.style.Theme_Black_NoTitleBar_Fullscreen
Ben Clayton
4
Call requires API level 11
Luis A. Florit
1
@ LuisA.Florit essayez Theme_Black_NoTitleBar_Fullscreen
Felipe Caldas
21
Qu'en est-il du plein écran avec une barre de titre?
Heath Borders
1
Lorsque je fais cela (en utilisant DialogFragment), je vois que la couleur de la barre d'état est tuée par la boîte de dialogue, tout l'écran est la couleur d'arrière-plan de la boîte de dialogue. Quelqu'un connaît-il une solution de rechange? J'ai essayé de définir le statusBarColor de la fenêtre de la boîte de dialogue, sans effet. PS: la couleur de la barre de navigation est également tuée.
androidguy
83

sur la base de ce lien , la bonne réponse (que j'ai moi-même testée) est:

mettez ce code dans le constructeur ou la onCreate()méthode de la boîte de dialogue:

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

en outre, définissez le style de la boîte de dialogue sur:

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

ceci pourrait être réalisé via le constructeur, par exemple:

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

EDIT: une alternative à tout ce qui précède serait de définir le style sur android.R.style.Theme et c'est tout.

développeur android
la source
55

Le moyen le plus simple que j'ai trouvé

Dialog dialog=new Dialog(this,android.R.style.Theme_Black_NoTitleBar_Fullscreen);
        dialog.setContentView(R.layout.frame_help);
        dialog.show();
Javier Roberto
la source
1
merci c'était vraiment le moyen le plus simple!
CommonSenseCode
1
A travaillé comme un charme!
Lien 88 du
1
Génial. Fonctionne parfaitement
Jevgenij Kononov
C'est parfait! Devrait être la solution acceptée.
AmeyaB
ne peut pas changer la couleur de fond, toujours noir
Jemshit Iskenderov
42

MODIFIER Jusqu'à ce que StackOverflow nous permette de version nos réponses, ceci est une réponse qui fonctionne pour Android 3 et ci-dessous. Veuillez ne pas le rejeter car cela ne fonctionne pas pour vous maintenant, car il fonctionne certainement avec les anciennes versions d'Android.


Vous ne devriez avoir qu'à ajouter une ligne à votre onCreateDialog()méthode:

@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;
}
Caspar Harmer
la source
1
Pourquoi je ne peux pas utiliser FLAG_FULLSCREEN
user790156
2
Eh bien, c'est difficile à dire - Avez-vous importé LayoutParams? Votre mise en page XML est-elle définie sur fill_parent ou match_parent?
Caspar Harmer
12
utilisez android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN
Derzu
1
ERREUR:FLAG_FULLSCREEN cannot be resolved or is not a field
Luis A. Florit
1
Il est possible que cette réponse soit obsolète - cela pourrait ne pas fonctionner pour Android 4.0 et plus.
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();

essaye ça.

Prateek Sharma
la source
1
MATCH_PARENT a fonctionné pour moi.
Ray