Show AlertDialog in any position of the screen

When we show an AlertDialog in android it shows in the center of the screen. Is there any way to change the position?


Solution 1:

After searching in various post I have found the solution.

The code is posted below:

private CharSequence[] items = {"Set as Ringtone", "Set as Alarm"};
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setItems(items, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int item) {

            if(item == 0) {

            } else if(item == 1) {

            } else if(item == 2) {

            }
        }
    });

     AlertDialog dialog = builder.create();
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
     WindowManager.LayoutParams wmlp = dialog.getWindow().getAttributes();

 wmlp.gravity = Gravity.TOP | Gravity.LEFT;
 wmlp.x = 100;   //x position
 wmlp.y = 100;   //y position

 dialog.show();

Here x position's value is pixels from left to right. For y position value is from bottom to top.

Solution 2:

If you for example want to move the progressdialog a bit further down, and not set the exact pixel position, then this is sufficient:

progressDialog.getWindow().getAttributes().verticalMargin = 0.2F;

Solution 3:

To make the setting come info effect, I added the following code
dialog.getWindow().setAttributes(wmlp);

after change the value of wmlp in gypsicoder‘s answer, or the setting of wmlp doesn't take into effect by my test.