开发者

android dialog activity position

I created an non-maximized activity using androi开发者_Go百科d: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...


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


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.


Use .setGravity()

progDialog = ProgressDialog.show();

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


For bottom:

Keep this in your activity.

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

Note: You can change your gravity by setting this Gravity.BOTTOM (TOP, LEFT, RIGHT)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜