android对话活动位置

时间:2010-01-29 16:41:12

标签: android dialog android-activity

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

4 个答案:

答案 0 :(得分:22)

要更改位置(主题设置为Theme.Dialog),您可以在活动附加到窗口后覆盖活动装饰视图的LayoutParams的重力,大小和坐标。这是一个例子:

@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);
}

答案 1 :(得分:3)

创建一个自定义主题,其中Theme.Dialog为其父级:

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

因此,对于要更改的Dialog主题中的每个项目,请在Android Manifest中使用CustomDialogTheme而不是Theme.Dialog。有关详细信息,请参阅the android developper docs

答案 2 :(得分:1)

使用.setGravity()

progDialog = ProgressDialog.show();

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

答案 3 :(得分: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(顶部,左侧,右侧)来更改重力