Android中怎么自定義對話框位置及大小,針對這個(gè)問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。
成都創(chuàng)新互聯(lián)的客戶來自各行各業(yè),為了共同目標(biāo),我們在工作上密切配合,從創(chuàng)業(yè)型小企業(yè)到企事業(yè)單位,感謝他們對我們的要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。專業(yè)領(lǐng)域包括成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、電商網(wǎng)站開發(fā)、微信營銷、系統(tǒng)平臺(tái)開發(fā)。
代碼:
package angel.devil; import android.app.Activity; import android.app.Dialog; import android.os.Bundle; import android.view.Gravity; import android.view.Window; import android.view.WindowManager; public class DialogDemoActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Dialog dialog = new Dialog(this); // setContentView可以設(shè)置為一個(gè)View也可以簡單地指定資源ID // LayoutInflater // li=(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE); // View v=li.inflate(R.layout.dialog_layout, null); // dialog.setContentView(v); dialog.setContentView(R.layout.dialog_layout); dialog.setTitle("Custom Dialog"); /* * 獲取圣誕框的窗口對象及參數(shù)對象以修改對話框的布局設(shè)置, * 可以直接調(diào)用getWindow(),表示獲得這個(gè)Activity的Window * 對象,這樣這可以以同樣的方式改變這個(gè)Activity的屬性. */ Window dialogWindow = dialog.getWindow(); WindowManager.LayoutParams lp = dialogWindow.getAttributes(); dialogWindow.setGravity(Gravity.LEFT | Gravity.TOP); /* * lp.x與lp.y表示相對于原始位置的偏移. * 當(dāng)參數(shù)值包含Gravity.LEFT時(shí),對話框出現(xiàn)在左邊,所以lp.x就表示相對左邊的偏移,負(fù)值忽略. * 當(dāng)參數(shù)值包含Gravity.RIGHT時(shí),對話框出現(xiàn)在右邊,所以lp.x就表示相對右邊的偏移,負(fù)值忽略. * 當(dāng)參數(shù)值包含Gravity.TOP時(shí),對話框出現(xiàn)在上邊,所以lp.y就表示相對上邊的偏移,負(fù)值忽略. * 當(dāng)參數(shù)值包含Gravity.BOTTOM時(shí),對話框出現(xiàn)在下邊,所以lp.y就表示相對下邊的偏移,負(fù)值忽略. * 當(dāng)參數(shù)值包含Gravity.CENTER_HORIZONTAL時(shí) * ,對話框水平居中,所以lp.x就表示在水平居中的位置移動(dòng)lp.x像素,正值向右移動(dòng),負(fù)值向左移動(dòng). * 當(dāng)參數(shù)值包含Gravity.CENTER_VERTICAL時(shí) * ,對話框垂直居中,所以lp.y就表示在垂直居中的位置移動(dòng)lp.y像素,正值向右移動(dòng),負(fù)值向左移動(dòng). * gravity的默認(rèn)值為Gravity.CENTER,即Gravity.CENTER_HORIZONTAL | * Gravity.CENTER_VERTICAL. * * 本來setGravity的參數(shù)值為Gravity.LEFT | Gravity.TOP時(shí)對話框應(yīng)出現(xiàn)在程序的左上角,但在 * 我手機(jī)上測試時(shí)發(fā)現(xiàn)距左邊與上邊都有一小段距離,而且垂直坐標(biāo)把程序標(biāo)題欄也計(jì)算在內(nèi)了, * Gravity.LEFT, Gravity.TOP, Gravity.BOTTOM與Gravity.RIGHT都是如此,據(jù)邊界有一小段距離 */ lp.x = 100; // 新位置X坐標(biāo) lp.y = 100; // 新位置Y坐標(biāo) lp.width = 300; // 寬度 lp.height = 300; // 高度 lp.alpha = 0.7f; // 透明度 // 當(dāng)Window的Attributes改變時(shí)系統(tǒng)會(huì)調(diào)用此函數(shù),可以直接調(diào)用以應(yīng)用上面對窗口參數(shù)的更改,也可以用setAttributes // dialog.onWindowAttributesChanged(lp); dialogWindow.setAttributes(lp); /* * 將對話框的大小按屏幕大小的百分比設(shè)置 */ // WindowManager m = getWindowManager(); // Display d = m.getDefaultDisplay(); // 獲取屏幕寬、高用 // WindowManager.LayoutParams p = dialogWindow.getAttributes(); // 獲取對話框當(dāng)前的參數(shù)值 // p.height = (int) (d.getHeight() * 0.6); // 高度設(shè)置為屏幕的0.6 // p.width = (int) (d.getWidth() * 0.65); // 寬度設(shè)置為屏幕的0.65 // dialogWindow.setAttributes(p); dialog.show(); } }
布局文件:
main.xml
dialog_layout.xml
關(guān)于Android中怎么自定義對話框位置及大小問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。