Java 如何在Android上将窗口放置在自定义位置?

Java 如何在Android上将窗口放置在自定义位置?,java,android,Java,Android,在android操作系统中,如何设置屏幕上窗口的位置?我想把窗口设置在屏幕的左上角。我该怎么做 基本问题是,我的活动使用对话主题。然后,“活动”显示在屏幕中央。我希望它出现在屏幕的左上角。如何实现这一点?如果使用“活动作为主题”对话框,则可以使用以下代码 @Override public void onAttachedToWindow() { super.onAttachedToWindow(); View view = getWindow().getDecorVie

在android操作系统中,如何设置屏幕上窗口的位置?我想把窗口设置在屏幕的左上角。我该怎么做


基本问题是,我的活动使用对话主题。然后,“活动”显示在屏幕中央。我希望它出现在屏幕的左上角。如何实现这一点?

如果使用“活动作为主题”对话框,则可以使用以下代码

 @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);
}
如果您正在使用“警报”对话框,并希望调整设置,则可以按照以下代码段进行操作

 private CharSequence[] items = {"Set as Ringtone", "Set as Alarm"};
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setItems(items, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int item) {

            if(item == 0) {

            } else if(item == 1) {

            } else if(item == 2) {

            }
        }
    });

     AlertDialog dialog = builder.create();
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
     WindowManager.LayoutParams wmlp = dialog.getWindow().getAttributes();

 wmlp.gravity = Gravity.TOP | Gravity.LEFT;
 wmlp.x = 100;   //x position
 wmlp.y = 100;   //y position

 dialog.show();

谢谢你的回答。这对我帮助很大。我是在看了你的回答后才知道重力的。在那之前,我只是忽略了重力

因此,我建议采取更好的方法。视图放置的最上面的容器是“窗口”。DecorView也是一个将放置在窗户上的视图。因此,有一个简单的方法来实现我的要求。详情如下:

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        Window win=getWindow();
        WindowManager.LayoutParams para=win.getAttributes();
        para.gravity=Gravity.LEFT | Gravity.TOP;
        para.x=10;
        para.y=10;
        win.setAttributes(para);
    }

不管怎样,谢谢你的回复。这真的很有帮助。

plz显示您的代码您尝试了什么?你在使用PopupWindow吗?嗨,我发布了一个更好的方法。请看一看。我诚实地承认,只有在查看了您的代码之后,我才使用了更好的方法。在看了你的密码后,我得到了重力。非常感谢你。