34

我正在开发一个 android 应用程序,需要知道如何更改进度对话框的位置。我需要将它定位在屏幕底部,而不是像默认情况下那样位于中心。

4

4 回答 4

83

你可以打电话ProgressDialog#getWindow#setGravity(...)来改变重力。

所以:

ProgressDialog dialog = ProgressDialog.show(AContext, "Test", "On the bottom");
                dialog.getWindow().setGravity(Gravity.BOTTOM);
于 2010-08-03T00:48:40.863 回答
18

除了其他答案之外,您还可以使用 LayoutParams.x 或 LayoutParams.y 提供与给定边缘的偏移量。例如:

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

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

了解 LayoutParams.y 对您有好处:

此窗口的 Y 位置。使用默认重力它被忽略。当使用 TOP 或 BOTTOM 时,它提供了从给定边缘的偏移量。

关于 LayoutParams.x:

此窗口的 X 位置。使用默认重力它被忽略。当使用 LEFT 或 START 或 RIGHT 或 END 时,它提供从给定边缘的偏移量。

于 2012-12-24T08:01:17.043 回答
3

如果您为 ProgressDialog 使用任何自定义主题,则可以将以下 xml 标记添加到自定义主题的 style.xml 文件中的样式

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

于 2015-11-30T09:04:04.363 回答
1

将 android:gravity="bottom" 添加到布局中最外层的 XML 元素可能会做到这一点。不确定这是否会移动对话框或其内容。

于 2010-08-02T23:15:48.317 回答