自定义AlertDialog基本步骤:
1.写一个layout布局,使用inflater生成对应view对象
2.新建AlertDialog.Builder对象builder
3.builder设置自定义布局view,从view中获取各控件,设置对应业务逻辑
4.builder.create()生成AlertDialog对象,dialog.show()显示弹窗
以上基础方法中,若想给view设置圆角、半透明背景,发现效果不正常:半透明背景显示无透明度,圆角显示外层有尖角轮廓
解决方式:
以上步骤中,自定义的layout布局可以不设置指定背景,等dialog生成后,show之前,给dialog设定半透明或圆角等
关键方法:dialog.getWindow().setBackGroundDrawableResource(背景资源文件);
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();
效果: