Search code examples
androidandroid-widget

How to control the width and height of the default Alert Dialog in Android?


AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Title");
        builder.setItems(items, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int item) {
                Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
            }
        });
        AlertDialog alert = builder.create();

I am using the above code to display an Alert Dialog. By default, it fills the screen in width and wrap_content in height.
How can I control the width and height of default alert dialog ?
I tried:

alert.getWindow().setLayout(100,100); // It didn't work.

How to get the layout params on the alert window and manually set the width and height?


Solution

  • Only a slight change in Sat Code, set the layout after show() method of AlertDialog.

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setView(layout);
    builder.setTitle("Title");
    alertDialog = builder.create();
    alertDialog.show();
    alertDialog.getWindow().setLayout(600, 400); //Controlling width and height.
    

    Or you can do it in my way.

    alertDialog.show();
    WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
    
    lp.copyFrom(alertDialog.getWindow().getAttributes());
    lp.width = 150;
    lp.height = 500;
    lp.x=-170;
    lp.y=100;
    alertDialog.getWindow().setAttributes(lp);