android dialog activity position

2019-02-01 16:58发布

I created an non-maximized activity using android:theme="@android:style/Theme.Dialog" to make it looks like a dialog. I need to change the position of the activity on screen but I didn't find how to do this...

3条回答
成全新的幸福
2楼-- · 2019-02-01 17:24

To change the position (with the theme set to Theme.Dialog), you can override the gravity, size and coordinates of the LayoutParams of your activity's decor view after it has been attached to the window. Here's an example:

@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);
}
查看更多
可以哭但决不认输i
3楼-- · 2019-02-01 17:28

Create a custom theme with Theme.Dialog as its parent:

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

So, for each item in the Dialog theme that you want to change, use CustomDialogTheme instead of Theme.Dialog inside the Android Manifest. See the android developper docs for details.

查看更多
在下西门庆
4楼-- · 2019-02-01 17:45

Use .setGravity()

progDialog = ProgressDialog.show();

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

查看更多
登录 后发表回答