Dialog 大小和位置的控制

这段时间来一直研究dialog了,dialog中有一个特例而且经常使用他是AlertDialog它的创建是需要使用builder这个参数,可以直接使用builder来创建对话框,但有一些设置就需要用他的父类dialog来设置了。像大小,位置等这些。AlertDialog有一个特殊的地是他有setMessage,这个方法可以直接设置dialog内容为文本。

进入正题设置dialog为无标题使用这个方法:

Dialogdialog = arrowsDlg.create();

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

如果看不清看下面的截图:


Dialog  dialog = arrowsDlg.create();

dialog.requestWindowFeature(Window.FEATRUE_NO_TITLE);

这个参数对位置没有限制,但下面设置dialog的大小,和位置就对位置有要求了



dialog.show();

Window window = dialog.getWindow();

WindowManager.LayoutParams lp = window.getAttributes();

lp.width = 280;

lp.height = 600;

dialog.getWindow.setAttributes(lp);


这是设置dialog的大小他必须放在dialog.show()的后面,紧挨着不然是没有作用的,这点一定要注意上。

下面是设置dialog的位置:


dialog.show();

Window window = dialog.getWindow();

WindowManager.LayoutParams lp = window.getAttributes();

lp.x = 200;

lp.y = 300;

dialog.getWindow.setAttributes(lp);


对于设置dialog位置android中的对话话默认都居中显示,如果想改变dialog的显示位置,可以通过设置LayoutParams.xLayoutParams.y来实现:

 

居中时lp.x=0,lp.y=0,即屏幕的坐标原点正好位于屏幕的正中间。

所以这个位置和屏幕位置是不一样的这点也要注意。

还有就是设置dialog大小和位置这两个可以一块使用的

 

 

另外再提一点是求标题栏的高度。这个在很多地方用的


//得到标题高度

Rect frame = new Rect();

Activty activity = (Activity)context;

Window window= activity.getWindow();

((Activity)context).getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);

int contentTop = activity.getWindow().findViewbyId(Window.ID_ANDROID_CONTENT).getTop();

int statusBarHeight = frame.top;

//statusBarHeight是上面所求的状态栏的高度

int titleBarHeight = contentTop - statusBarHeight;


我这个是在activity外面用的,所以用了context转activity。

你可能感兴趣的:(布局,Android)