162 votes

Comment faire en sorte que le dialogue s'affiche en plein écran ?

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.

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

2 votes

Si vous souhaitez utiliser un PLEIN ÉCRAN Dialog pourquoi ne pas utiliser l'option par défaut ACTION_VIEW Intent pour les fichiers d'images ?

0 votes

Désolé, je veux dire presque plein écran ou pleine image

3 votes

En conjonction avec la réponse à willytate, si vous devez dialoguer, utilisez Android.R.style.Theme_Translucent_NoTitleBar_Fullscreen dans le thème.

270voto

mozarty Points 1312

Essayez

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

31 votes

Pour que cela fonctionne, j'ai dû utiliser Android.R.style.Theme_Black_NoTitleBar_Fullscreen.

4 votes

Call requires API level 11

1 votes

@LuisA.Florit essayer Theme_Black_NoTitleBar_Fullscreen

109voto

android developer Points 20939

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

mettez ce code dans le constructeur ou le onCreate() 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 à :

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

Cela 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 à android.R.style.ThemeOverlay et c'est tout.

EDIT2 : Pour supporter la bibliothèque matérielle, ajouter une dépendance Gradle à app(module) build.gradle fichier

implementation "com.google.android.material:material:$material_version"

Définissez ensuite le thème du dialogue comme suit R.style.ThemeOverlay_MaterialComponents

0 votes

Avec mon essai, celui-ci est le seul à fonctionner. android.R.style.ThemeOverlay est la clé.

0 votes

@Yeung Je me demande si ThemeOverlay.MaterialComponents convient également. Pouvez-vous vérifier ?

1 votes

Essayé. Cela fonctionne, mais je ne sais pas si c'est utile ou non car je développe avec un vieil appareil Android 5.

67voto

Javier Roberto Points 159

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();

0 votes

Impossible de changer la couleur de l'arrière-plan, toujours noir

47voto

CaspNZ Points 4357

EDITAR Jusqu'à ce que StackOverflow nous permette de modifier nos réponses, cette réponse fonctionne pour Android 3 et les versions inférieures. Veuillez ne pas la décoter parce qu'elle ne fonctionne pas pour vous maintenant, car elle fonctionne sans aucun doute avec les anciennes versions d'Android.


Vous ne devriez avoir besoin d'ajouter qu'une seule ligne à votre fichier 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;
}

1 votes

Pourquoi je ne peux pas utiliser FLAG_FULLSCREEN

2 votes

Eh bien, c'est difficile à dire - Avez-vous importé LayoutParams ? Votre layout xml est-il réglé sur fill_parent ou match_parent ?

13 votes

Utiliser Android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN

45voto

Prateek Sharma Points 25
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();

Essayez ceci.

2 votes

MATCH_PARENT a fonctionné pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X