web-dev-qa-db-fra.com

Dialogue personnalisé en plein écran?

Existe-t-il un moyen de rendre l'affichage de la boîte de dialogue en plein écran, c'est-à-dire que la boîte de dialogue occupe tout l'écran (comme une activité). J'ai essayé d'utiliser les LayoutParams et des styles tels que <item name="Android:windowFullscreen">true</item> mais rien ne semble fonctionner. 

J'ai trouvé un moyen de supprimer la barre de titre, mais je n'ai pas trouvé le moyen de mettre une boîte de dialogue en plein écran. Alors quelqu'un peut-il me suggérer un moyen de le faire?.

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyTheme" parent="@Android:style/Theme.Dialog">
    <item name="Android:windowFullscreen">true</item>
    <item name="Android:windowFrame">@null</item>
    <item name="Android:windowNoTitle">true</item>
    <item name="Android:windowIsFloating">true</item>
    <item name="Android:windowContentOverlay">@null</item>
    <item name="Android:windowBackground">@color/dialog_background</item>
</style>
</resources>
39
Bob

Donnez à son constructeur un thème ne contenant pas de dialogue, tel que Android.R.style.Theme ou Android.R.style.Theme_Light .

Code par @Bob.

Dialog dialog = new Dialog(context, Android.R.style.Theme_Light); 
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
dialog.setContentView(R.layout.MyCustomDialogLayout); 
dialog.show();
88
Renard

Le code suivant fonctionne dans mon cas:

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
dialog.setContentView(R.layout.mydialog2);
dialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
31
Nibha Jain

Essaye ça

dialog = new Dialog(context,Android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
16
Lakshmanan

1. personnalisez votre style de dialogue 

 <style name = "MyDialog" >
        <item name="Android:windowNoTitle">true</item>
        <item name="Android:windowFullscreen">true</item>
        <item name="Android:windowIsTranslucent">true</item>
        <item name = "Android:windowContentOverlay" >@null</item >
        <item name = "Android:colorBackgroundCacheHint" >@null</item >
        <item name = "Android:backgroundDimEnabled">true</item>
        <item name = "Android:windowBackground" >@Android:color/transparent</item >
    </style >

2: personnalisez votre dialogue

WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
            int width = wm.getDefaultDisplay().getWidth();
            int height = wm.getDefaultDisplay().getHeight();
            final Dialog dialog = new Dialog(this, R.style.MyDialog);
            View view = LayoutInflater.from(this).inflate(R.layout.layout_dialog, null);

            WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
            params.width = WindowManager.LayoutParams.MATCH_PARENT;
            params.height = WindowManager.LayoutParams.WRAP_CONTENT;

            dialog.setContentView(view);
            dialog.getWindow().setGravity(Gravity.BOTTOM);
            dialog.getWindow().setWindowAnimations(R.style.mydialog_Style);
            dialog.show();

2
Allen

Pour les dialogues en plein écran, vous devez étendre DialogFragment. Il fournira les méthodes du cycle de vie Fragment. C'est la méthode recommandée dans les documents de développement Android. Vous pouvez également utiliser les méthodes simples Dialog ou AlertDialog.

Lorsque vous créez une instance de dialogue, utilisez simplement Android.R.style.Theme_Black_NoTitleBar_Fullscreen theme avec le contexte suivant:

Dialog dialog = new Dialog(getActivity(), Android.R.style.Theme_Black_NoTitleBar_Fullscreen);

ou

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), Android.R.style.Theme_Black_NoTitleBar_Fullscreen);

Cela affichera la boîte de dialogue en plein écran.

1
Biswajit

La réponse ne fonctionne pas pour moi (sdk 21, samsung galaxy s5). Après des recherches et des tests, je constate que le point clé pour définir une boîte de dialogue en plein écran est le <item name="Android:windowIsFloating">false</item> dans votre style de dialogue. La plupart des styles de dialogue dans sdk sont définis comme tels! Définissez-le faux dans un style et utilisez-le dans

AlertDialog.Builder = new AlertDialog.Builder(getActivity(), R.style.YourStyle);

votre style peut ressembler

<style name="YourStyle">
    <item name="Android:windowIsFloating">false</item>
    ...
</style>

après la définition de false, il devrait être en plein écran. Et plus encore, vous pouvez utiliser

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

pour régler sa hauteur sur wrap_content . J'espère pouvoir aider quelqu'un.

1
AssIstne

Créez votre dialogue personnalisé en tant que

Dialog dialog = new Dialog(context, Android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
0
venu46

J'utilise un thème Activité avec dialogue. Dans ce cas, le mode plein écran fonctionnait comme suit:

int mUIFlag = View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            | View.SYSTEM_UI_FLAG_FULLSCREEN
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;

@Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().getDecorView().setSystemUiVisibility(mUIFlag);

        getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
        setContentView(R.layout.lockscreen_activity);
}
0
Hamburg is nice

Voici les étapes à suivre pour créer une boîte de dialogue plein écran avec une disposition personnalisée qui occupe la totalité de l’écran sans aucun remplissage de chaque site.

Étape 1: Définissez votre structure de dialogue personnalisée nommée layout_fullscreen_dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
        xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:background="@color/colorPrimary">

    <!-- Your dialog content here -->

</LinearLayout>

Étape 2: Définissez un nouveau style dans styles.xml nommé FullScreenDialog

<style name="FullScreenDialog" parent="Theme.AppCompat.Dialog">
    <item name="Android:windowBackground">@Android:color/transparent</item>
</style>

Etape 3: Ecrivez une méthode qui crée et affiche un dialogue.

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        createAndShowDialog(this);
    }

    // This method used to create and show a full screen dialog with custom layout.
    public void createAndShowDialog(Context context) {
        Dialog dialog = new Dialog(context, R.style.FullScreenDialog);
        dialog.setContentView(R.layout.layout_fullscreen_dialog);

        WindowManager.LayoutParams layoutParams = dialog.getWindow().getAttributes();
        dialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
        dialog.getWindow().setAttributes(layoutParams);
        dialog.show();
    }
}
0
Tommy

essayez ce code

protected void openDialog() {
        Dialog dialog = new Dialog(this);
        dialog.addContentView(new View(this), (new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)));
        dialog.show();
    }
0
vipin