这段时间来一直研究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.x和LayoutParams.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。