下面是设置对话框x的偏移量。
1int marginLeft = 100; 2 Window window = getDialog().getWindow(); 3 WindowManager.LayoutParams wmlp =window.getAttributes(); 4 wmlp.gravity = Gravity.LEFT; 5 wmlp.x = marginLeft; 6 Log.i(getTag(), "wmlp="+wmlp); 7 window.setAttributes(wmlp);
值得注意的是: 我们要看看WindowManager.LayoutParams的文档中关于x,y属性的说明:
1/** 2 * X position for this window. With the default gravity it is ignored. 3 * When using {@link Gravity#LEFT} or {@link Gravity#START} or {@link Gravity#RIGHT} or 4 * {@link Gravity#END} it provides an offset from the given edge. 5 */ 6 @ViewDebug.ExportedProperty 7 public int x; 8 9 /** 10 * Y position for this window. With the default gravity it is ignored. 11 * When using {@link Gravity#TOP} or {@link Gravity#BOTTOM} it provides 12 * an offset from the given edge. 13 */ 14 @ViewDebug.ExportedProperty 15 public int y;
重要的两点就是:
(1)如果你需要设置x的值,那么需要将gravity设置有LEFT,START,RIGHT或者END。
(2)如果你需要设置y的值,那么需要将gravity设置成有TOP,BOTTOM。
上面的两点,如果你的对FrameLayout设置的margin不起作用了,可能也是需要遵守上面两点规则。