Android Alertdialog彈出框設定半透明背景
阿新 • • 發佈:2019-01-29
自定義AlertDialog基本步驟:
1.寫一個layout佈局,使用inflater生成對應view物件
2.新建AlertDialog.Builder物件builder
3.builder設定自定義佈局view,從view中獲取各控制元件,設定對應業務邏輯
4.builder.create()生成AlertDialog物件,dialog.show()顯示彈窗
以上基礎方法中,若想給view設定圓角、半透明背景,發現效果不正常:半透明背景顯示無透明度,圓角顯示外層有尖角輪廓
解決方式:
以上步驟中,自定義的layout佈局可以不設定指定背景,等dialog生成後,show之前,給dialog設定半透明或圓角等
View createView = inflater.inflate(R.layout.dialog_create_msg_layout, null); AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setView(createView); final AlertDialog dialog = builder.create(); dialog.getWindow().setBackgroundDrawableResource(R.drawable.fg1_msgdialog_background); // 取消、確定按鈕textview TextView tvCancel = (TextView) createView.findViewById(R.id.fg1_create_msg_dialog_tv_cancel); TextView tvConfirm = (TextView) createView.findViewById(R.id.fg1_create_msg_dialog_tv_confirm); final EditText etMsg = (EditText) createView.findViewById(R.id.fg1_create_msg_dialog_et); tvCancel.setOnClickListener(listener); tvConfirm.setOnClickListener(listener); // 編輯留言-取消 tvCancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dialog.dismiss(); } }); // 編輯留言-傳送 tvConfirm.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String homeMessageStr = etMsg.getText().toString(); if (null == homeMessageStr || homeMessageStr.equals("")) { toastUser("您還沒有填寫任何內容!"); return; } Params.deviceController.sendHomeMessage(homeMessageStr); dialog.dismiss(); } }); dialog.show();
效果: