這段時間來一直研究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。