2013-03-27 47 views
0

我怎样才能设置在Android操作系统的屏幕上的窗口的位置?我想在屏幕的左上角设置窗口。我怎样才能做到这一点?如何将窗口放置在Android上的自定义位置?

基本问题是,我正在使用对话框主题进行我的活动。然后活动出现在屏幕的中心。我希望它出现在屏幕的左上角。我怎么能做到这一点?

+0

plz显示你的代码你试过了什么?你在使用PopupWindow吗? – 2013-03-27 08:15:41

回答

0

如果你正在使用你的活动为主题的对话,那么你可以使用下面的代码

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

嗨,我发布了一个更好的方法。请看一下。我诚实地接受,只有在看完你的代码之后,我才会用更好的方法登陆。我看到你的代码后才得到的重力。非常感谢你。 – Murray9654 2013-03-27 10:58:09

0

感谢您的答复。这对我帮助很大。只有在看到你的回复后,我才得到关于Gravity的提示。直到那时我才忽略了重力。

所以我建议一个更好的方法。视图放置的最顶层的容器是“窗口”。 DecorView也是一个放在Window上的视图。所以有一个简单的方法来实现我的要求。它如下

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

任何方式感谢您的答复。这真的很有帮助。

相关问题