安卓中實現自定義對話方塊以及自定義顯示位置
阿新 • • 發佈:2019-01-07
專案中有用到如下的對話方塊效果,本來是想用popwindow來實現的結果發現不能覆蓋原來的佈局,不知道是我瞭解的不夠還是本身就不行,發現彈出的對話方塊會與原來的佈局重疊
後面就用對話方塊來實現了,接下來講一下如何實現自定義對話方塊和自定義對話方塊的彈出位置。
在查資料的時候發現有兩種形式的對話方塊一個是Dialog,一個是AlertDialog,後者不能設定標題,前者預設有標題
/* 建立AlertDialog物件並顯示 */
final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
alertDialog.show();
/* 新增對話方塊自定義佈局 */
alertDialog.setContentView(R.layout.alertdialog_popwindow_type);
/* 獲取對話方塊視窗 */
Window window = alertDialog.getWindow();
/* 設定顯示視窗的寬高 */
window.setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
/* 設定視窗顯示位置 */
if (i == 1) {
window.setGravity(Gravity.BOTTOM);
} else {
window.setGravity(Gravity.CENTER);
}
/* 還可以設定視窗顯示動畫 */
// window.setWindowAnimations(R.style.AlertDialog_AppCompat);
/* 通過window找佈局裡的控制元件 */
window.findViewById(R.id.wallet _iv_close).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 隱藏對話方塊
alertDialog.dismiss();
}
});
window.findViewById(R.id.wallet_tv_type1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
textView1.setText("現金");
}
});
這裡需要注意的是先AlertDialog,再通過AlertDialog獲取Window物件,Window物件可以設定顯示位置和大小以及點選事件,點選事件需匿名內部類才能實現點選不能用本類繼承onclicklistener,經測試沒反應,找控制元件也要通過該window去找不能通過自定義佈局的view去找
接下來看下效果
效果是實現了,因為類似效果很多軟體都有,我還是寫出來