对话框 | 用法 |
---|---|
普通 | AlertDialog.Builder() |
单选 | AlertDialog.Builder() - setSingleChoiceItems() |
多选 | AlertDialog.Builder() - setMultiChoiceItems() |
日期 | DatePickerDialog - new DatePickerDialog(context,DatePickerDialog.OnDateSetListener,year,month,day); |
时间 | TimePickerDialog - new TimePickerDialog(context, TimePickerDialog.OnTimeSetListener,时,分,是否24进制); |
水平 | ProgressDialog - setStyle(ProgressDialog.STYLE_HORIZONTAL) |
圆圈 | ProgressDialog - setStyle(ProgressDialog.STYLE_SPINNER) |
自定义 | AlertDialog.Builder() - setView() |
有了布局文件,接下来就是要创建类,来设置具体怎么使用
public class UserDefinedDialog extends Dialog {
private TextView title;
private TextView message;
private Button no;
private Button yes;
private String titleStr;//从外界设置的title文本
private String messageStr;//从外界设置的消息文本
//确定文本和取消文本的显示的内容
private String yesStr, noStr;
//取消按钮被点击了的监听器
private onNoOnclickListener noOnclickListener;
//确定按钮被点击了的监听器
private onYesOnclickListener yesOnclickListener;
public UserDefinedDialog(Context context) {
super(context);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.userdefined_dialog);
//初始化控件
initViews();
//初始化数据
initDatas();
//初始化控件事件
initEvents();
}
private void initEvents() {
//设置确定按钮被点击后,向外界提供监听
yes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (yesOnclickListener!=null){
yesOnclickListener.onYesOnclick();
}
}
});
//设置取消按钮的监听
no.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (noOnclickListener!=null){
noOnclickListener.onNoClick();
}
}
});
}
private void initDatas() {
//做非空判断,防止数据为空
if (titleStr!=null){
title.setText(titleStr);
}
if (messageStr!=null){
message.setText(messageStr);
}
if (yesStr!=null){
yes.setText(yesStr);
}
if (noStr!=null){
no.setText(noStr);
}
}
private void initViews() {
title = (TextView) findViewById(R.id.title);
message = (TextView) findViewById(R.id.message);
no = (Button) findViewById(R.id.no);
yes = (Button) findViewById(R.id.yes);
}
//从外界Activity为UserDefinedDialog设置标题
public void setTitleStr(String titleStr) {
this.titleStr = titleStr;
}
public void setMessageStr(String messageStr) {
this.messageStr = messageStr;
}
//自定义点击事件
public interface onNoOnclickListener {
public void onNoClick();
}
public interface onYesOnclickListener {
public void onYesOnclick();
}
public void setNoOnclickListener(String str,onNoOnclickListener noOnclickListener) {
if (str!=null){
noStr = str;
}
this.noOnclickListener = noOnclickListener;
}
public void setYesOnclickListener(String str,onYesOnclickListener yesOnclickListener) {
if (str!=null){
yesStr = str;
}
this.yesOnclickListener = yesOnclickListener;
}
}
最后在MainActivity中将自定义的对话框进行创建,添加内容即可
private void UserDefinedDialog() {
btn8 = findViewById(R.id.btn_8);
btn8.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final UserDefinedDialog dialog = new UserDefinedDialog(MainActivity.this);
//通过自己设置的方法,跟新对话框内容
dialog.setTitleStr("这是title");
dialog.setMessageStr("这是提示信息");
//确定按钮
dialog.setYesOnclickListener("yes", new UserDefinedDialog.onYesOnclickListener() {
@Override
public void onYesOnclick() {
Toast.makeText(MainActivity.this, "按钮被点击", Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
});
//取消按钮
dialog.setNoOnclickListener("no", new UserDefinedDialog.onNoOnclickListener() {
@Override
public void onNoClick() {
Toast.makeText(MainActivity.this, "按钮被点击", Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
});
//显示对话框
dialog.show();
}
});
}
最终效果:
作者:汪星没有熊