我使用android:theme="@android:style/Theme.Dialog"创建了一个非最大化的activity,使其看起来像对话框。但我需要改变它在屏幕上的位置,但我找不到如何实现...
我使用android:theme="@android:style/Theme.Dialog"创建了一个非最大化的activity,使其看起来像对话框。但我需要改变它在屏幕上的位置,但我找不到如何实现...
如果要更改位置(并将主题设置为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);
}
Theme.Dialog
为父级的自定义主题: <style name="CustomDialogTheme" parent="@android:style/Theme.Dialog">
CustomDialogTheme
而不是 Theme.Dialog
。 有关详细信息,请参见android开发人员文档。使用 .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();
}
}