# CustomDialog **Repository Path**: dezhihuang/CustomDialog ## Basic Information - **Project Name**: CustomDialog - **Description**: 自定义对话框 - **Primary Language**: Android - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-05-12 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 自定义确认对话框。 1 设置自定义对话框样式 ```xml ``` 2 新建自己的布局文件:包含标题TextView,提示文本TextView,取消按钮Button,确认按钮 3 对话框设置圆角背景(文件建在drawable文件夹下) ```xml ``` 4 按钮同样设置圆角背景,并有点击效果,即点击时改变背景颜色(文件建在drawable文件夹下) ```xml ``` 5 新建自定义对话框类,继承自android.app.Dialog ```java public class CustomAlertDialog extends Dialog { public CustomAlertDialog(Context context) { super(context, R.style.CustomAlertDialog); } public CustomAlertDialog(Context context, int themeResId) { super(context, themeResId); } protected CustomAlertDialog(Context context, boolean cancelable, DialogInterface.OnCancelListener cancelListener) { super(context, cancelable, cancelListener); } } ``` 在构造函数中设置前面自定义的样式。(第3行) 6 重写onCreate方法,设置自定义布局并初始化相关控件 7 设置按钮点击事件 创建监听回调接口 ```java public interface OnClickListener { void onClick(Dialog dialog); } ``` 取消按钮一般直接销毁对话框,确认对话框传入自己是为了确认点击之后销毁对话框。(如果是自定义输入对话框,确认按钮的点击回调接口将输入框的值传入) ```java btnCancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { CustomAlertDialog.this.dismiss(); } }); btnConfirm.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mOnClickListener != null) { mOnClickListener.onClick(CustomAlertDialog.this); } } }); ``` 8 提供方法设置相关参数,如标题、提示文本、字体颜色、按钮背景等。为了能够链式调用,每个方法返回自己。 9 调用 ```java new CustomAlertDialog(this) .setButtonBackgroundResource(R.drawable.rounded_button_bg_green) .setTitleText("通知") .setMessageText("消息消息") .setTextColor(Color.argb(255,60,179,113)) .setOnClickListener(new CustomAlertDialog.OnClickListener() { @Override public void onClick(Dialog dialog) { dialog.dismiss(); } }) .show(); ``` 注意:相关参数要在调用show之前设置,调用show时会调用onCreate,所以在onCreate中初始化控件。