web-dev-qa-db-fra.com

Comment créer une boîte de dialogue qui sera pleine en dimension horizontale

Lorsque j'utilise dans la mise en page, qui spécifie cette boîte de dialogue Android:layout_width="match_parent" J'obtiens cette boîte de dialogue:

small dialog

J'ai besoin d'un dialogue qui sera plus large. Des idées?

35
west44

Pour ce faire, saisissez l'objet Window que la boîte de dialogue utilise et réinitialisez la largeur. Voici un exemple simple:

//show the dialog first
AlertDialog dialog = new AlertDialog.Builder(this)
        .setTitle("Test Dialog")
        .setMessage("This should expand to the full width")
        .show();
//Grab the window of the dialog, and change the width
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
Window window = dialog.getWindow();
lp.copyFrom(window.getAttributes());
//This makes the dialog take up the full width
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
window.setAttributes(lp);

Voici le résultat final. Notez qu'il y a beaucoup plus de style que vous pouvez faire dans la boîte de dialogue si vous devez affiner les choses (comme changer l'arrière-plan, etc.). Lorsque j'ai dû le faire dans le passé, j'utilise généralement cette méthode et personnalise la disposition utilisée dans la boîte de dialogue avec setView() sur la classe de générateur.

example

122
wsanville

Une autre façon de résoudre ce problème consiste à utiliser:

import Android.support.v7.app.AlertDialog;

au lieu de:

import Android.app.AlertDialog;
4
user2880229