android对话框活动位置

android对话框活动位置,android,dialog,android-activity,Android,Dialog,Android Activity,我使用android:theme=“@android:style/theme.Dialog”创建了一个非最大化的活动,使其看起来像一个对话框。我需要改变活动在屏幕上的位置,但我没有找到如何做 创建一个自定义主题,将主题对话框作为其父级: <style name="CustomDialogTheme" parent="@android:style/Theme.Dialog"> 因此,对于对话框主题中要更改的每个项目,在Android清单中使用CustomDialogTheme

我使用android:theme=“@android:style/theme.Dialog”创建了一个非最大化的活动,使其看起来像一个对话框。我需要改变活动在屏幕上的位置,但我没有找到如何做

创建一个自定义主题,将
主题对话框
作为其父级:

  <style name="CustomDialogTheme" parent="@android:style/Theme.Dialog">

因此,对于对话框主题中要更改的每个项目,在Android清单中使用
CustomDialogTheme
而不是
theme.Dialog
。有关详细信息,请参见。

若要更改位置(将主题设置为
theme.Dialog
),您可以在活动的装饰视图附着到窗口后覆盖其布局参数的重力、大小和坐标。下面是一个例子:

@Override
public void onAttachedToWindow() {
    super.onAttachedToWindow();

    View view = getWindow().getDecorView();
    WindowManager.LayoutParams lp = (WindowManager.LayoutParams) view.getLayoutParams();
    lp.gravity = Gravity.LEFT | Gravity.TOP;
    lp.x = 10;
    lp.y = 10;
    lp.width = 300;
    lp.height = 300;
    getWindowManager().updateViewLayout(view, lp);
}
Use.setGravity()

progDialog=ProgressDialog.show()

progDialog.getWindow().setGravity(Gravity.BOTTOM)

对于底部:

在你的活动中保持这一点

@Override
    public void onAttachedToWindow() {
        super.onAttachedToWindow();
        try {
            View view = getWindow().getDecorView();
            WindowManager.LayoutParams layoutParams = (WindowManager.LayoutParams) view.getLayoutParams();
            layoutParams.gravity = Gravity.BOTTOM;
            getWindowManager().updateViewLayout(view, layoutParams);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
注意:您可以通过设置此gravity.BOTTOM(上、左、右)来更改重力