34

I'm developing an android app and need to know how to change the positioning of a progress dialog. I need it to be positioned at the bottom of the screen instead of at the center like it is by default.

Bob
  • 22,810
  • 38
  • 143
  • 225
oliverwhite
  • 563
  • 1
  • 8
  • 16

4 Answers4

83

You can call ProgressDialog#getWindow#setGravity(...) to change the gravity.

So:

ProgressDialog dialog = ProgressDialog.show(AContext, "Test", "On the bottom");
                dialog.getWindow().setGravity(Gravity.BOTTOM);
Rich Schuler
  • 41,814
  • 6
  • 72
  • 59
19

In addition to the other answers you can use LayoutParams.x or LayoutParams.y to provide an offset from the given edge. For Example:

progressDialog = ProgressDialog.show(this, "Title","Text");

progressDialog.getWindow().setGravity(Gravity.TOP);
LayoutParams params = progressDialog.getWindow().getAttributes();
params.y = 100;
progressDialog.getWindow().setAttributes(params);

And it is good for you to know about LayoutParams.y:

Y position for this window. With the default gravity it is ignored. When using TOP or BOTTOM it provides an offset from the given edge.

and about LayoutParams.x:

X position for this window. With the default gravity it is ignored. When using LEFT or START or RIGHT or END it provides an offset from the given edge.

Bob
  • 22,810
  • 38
  • 143
  • 225
3

If you're using any custom theme for the ProgressDialog, Then you could add the below xml tag to the style in your style.xml file of the custom theme

<item name="android:layout_gravity">bottom</item>

Samuel Robert
  • 10,106
  • 7
  • 39
  • 60
1

Adding android:gravity="bottom" to the outermost XML element in the layout might do it. Not sure if this moves the dialog or the contents of it.

matto1990
  • 3,766
  • 2
  • 27
  • 32