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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章