Android对话框活动的位置

17

我使用android:theme="@android:style/Theme.Dialog"创建了一个非最大化的activity,使其看起来像对话框。但我需要改变它在屏幕上的位置,但我找不到如何实现...

4个回答

24

如果要更改位置(并将主题设置为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);
}

3
创建一个以 Theme.Dialog 为父级的自定义主题:
  <style name="CustomDialogTheme" parent="@android:style/Theme.Dialog">

因此,对于您想要更改的对话框主题中的每个项目,请在Android清单中使用 CustomDialogTheme 而不是 Theme.Dialog 。 有关详细信息,请参见android开发人员文档

1

使用 .setGravity() 方法

progDialog = ProgressDialog.show();

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


0

对于底部:

将此保留在您的活动中。

@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(TOP,LEFT,RIGHT)来更改重力。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接