android-dialog的位置
1 public class DialogDemoActivity extends Activity { 2 /** Called when the activity is first created. */ 3 @Override 4 public void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.main); 7 8 Dialog dialog = new Dialog(this); 9 10 // setContentView可以设置为一个View也可以简单地指定资源ID 11 // LayoutInflater 12 // li=(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE); 13 // View v=li.inflate(R.layout.dialog_layout, null); 14 // dialog.setContentView(v); 15 dialog.setContentView(R.layout.dialog_layout); 16 17 dialog.setTitle("Custom Dialog"); 18 19 /* 20 * 获取圣诞框的窗口对象及参数对象以修改对话框的布局设置, 21 * 可以直接调用getWindow(),表示获得这个Activity的Window 22 * 对象,这样这可以以同样的方式改变这个Activity的属性. 23 */ 24 Window dialogWindow = dialog.getWindow(); 25 WindowManager.LayoutParams lp = dialogWindow.getAttributes(); 26 dialogWindow.setGravity(Gravity.LEFT | Gravity.TOP); 27 28 /* 29 * lp.x与lp.y表示相对于原始位置的偏移. 30 * 当参数值包含Gravity.LEFT时,对话框出现在左边,所以lp.x就表示相对左边的偏移,负值忽略. 31 * 当参数值包含Gravity.RIGHT时,对话框出现在右边,所以lp.x就表示相对右边的偏移,负值忽略. 32 * 当参数值包含Gravity.TOP时,对话框出现在上边,所以lp.y就表示相对上边的偏移,负值忽略. 33 * 当参数值包含Gravity.BOTTOM时,对话框出现在下边,所以lp.y就表示相对下边的偏移,负值忽略. 34 * 当参数值包含Gravity.CENTER_HORIZONTAL时 35 * ,对话框水平居中,所以lp.x就表示在水平居中的位置移动lp.x像素,正值向右移动,负值向左移动. 36 * 当参数值包含Gravity.CENTER_VERTICAL时 37 * ,对话框垂直居中,所以lp.y就表示在垂直居中的位置移动lp.y像素,正值向右移动,负值向左移动. 38 * gravity的默认值为Gravity.CENTER,即Gravity.CENTER_HORIZONTAL | 39 * Gravity.CENTER_VERTICAL. 40 * 41 * 本来setGravity的参数值为Gravity.LEFT | Gravity.TOP时对话框应出现在程序的左上角,但在 42 * 我手机上测试时发现距左边与上边都有一小段距离,而且垂直坐标把程序标题栏也计算在内了, 43 * Gravity.LEFT, Gravity.TOP, Gravity.BOTTOM与Gravity.RIGHT都是如此,据边界有一小段距离 44 */ 45 lp.x = 100; // 新位置X坐标 46 lp.y = 100; // 新位置Y坐标 47 lp.width = 300; // 宽度 48 lp.height = 300; // 高度 49 lp.alpha = 0.7f; // 透明度 50 51 // 当Window的Attributes改变时系统会调用此函数,可以直接调用以应用上面对窗口参数的更改,也可以用setAttributes 52 // dialog.onWindowAttributesChanged(lp); 53 dialogWindow.setAttributes(lp); 54 55 /* 56 * 将对话框的大小按屏幕大小的百分比设置 57 */ 58 // WindowManager m = getWindowManager(); 59 // Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用 60 // WindowManager.LayoutParams p = dialogWindow.getAttributes(); // 获取对话框当前的参数值 61 // p.height = (int) (d.getHeight() * 0.6); // 高度设置为屏幕的0.6 62 // p.width = (int) (d.getWidth() * 0.65); // 宽度设置为屏幕的0.65 63 // dialogWindow.setAttributes(p); 64 65 dialog.show(); 66 67 } 68 }