Dialog的使用

android的dialog分为两大类普通dialog和列表dialog

普通dialog

AlertDialog对话框

在使用对话框分为以下几步:
1.AlertDialog我们在使用时需要先创建一个Builder建造者。
2.通过这个建造者可以设置dialog的标题和Icon、message等
3.调用builder的create方法创建一个Dialog对象。
4.调用dialog的show方法显示dialog
代码如下:
private void alertDialog() {
		//使用Builder创建一个Builder对象
		AlertDialog.Builder builder=new AlertDialog.Builder(this);
		//设置title,icon,message
		builder.setIcon(R.drawable.ic_launcher).setTitle("title").setMessage("messsage");
		//点击事件
		builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				Toast.makeText(MainActivity.this, "ok", Toast.LENGTH_SHORT).show();
			}
		});
		builder.setNegativeButton("cancle", null);
		//使用create得到一个dialog对象,调用dailog的show方法显示dialog
		builder.create().show();
	}

DatePickerdialog对话框

使用的步骤如下:
1.使用日历类得到年、月、日
2.创建一个DatePickerDialog对象。
3.设置DatePickerDailog对象的title、icon等
4.调用datePickerDialog的show方法显示对话框
private void datePickerDialog() {
		Calendar calendar=Calendar.getInstance();
		int year = calendar.get(Calendar.YEAR);
		int monthOfYear=calendar.get(Calendar.MONTH);
		int dayOfMonth=calendar.get(Calendar.DAY_OF_MONTH);
		DatePickerDialog dialog=new DatePickerDialog(this, new OnDateSetListener() {
			
			@Override
			public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
				Toast.makeText(MainActivity.this, ""+year+"-"+(monthOfYear+1)+"-"+dayOfMonth,Toast.LENGTH_SHORT).show();
			}
		}, year, monthOfYear, dayOfMonth);
		dialog.setTitle("title");
		dialog.setIcon(R.drawable.ic_launcher);
		dialog.show();
	}

TimePickerDialog对话框

使用步骤:
1.获取时、分
2.创建TimePickerDialog对象
3.设置timePickerDialog的title、icon等
4.调用timePickerdialog的show方法显示
代码:
private void timePickerDialog() {
		Calendar calendar=Calendar.getInstance();
		int hourOfDay=calendar.get(Calendar.HOUR_OF_DAY);
		int minute=calendar.get(Calendar.MINUTE);
		TimePickerDialog dialog=new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
			
			@Override
			public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
				Toast.makeText(MainActivity.this, ""+hourOfDay+":"+minute, Toast.LENGTH_SHORT).show();
			}
		}, hourOfDay, minute, true);
		dialog.setIcon(R.drawable.ic_launcher);
		dialog.setTitle("title");
		dialog.show();
		
	}

用户自定义的对话框

我这里暂且叫用户自定义的对话框为CustomDialog
使用的步骤:
1.创建一个Builder对象
2.设置title、icon等
3.利用布局填充器获取用户自定义的View
4.使用setView方法设置用户自己定义的view
5.调用builder的create方法创建一个Dialog对象
6.调用dialog的show方法显示dialog
代码
private void customDialog() {
		AlertDialog.Builder builder=new AlertDialog.Builder(this);
		builder.setIcon(R.drawable.ic_launcher).setTitle("title");
		View view=getLayoutInflater().inflate(R.layout.dialog, null,false);
		final EditText editTextName=(EditText) view.findViewById(R.id.edittext_name);
		builder.setView(view);
		builder.setPositiveButton("login", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				Toast.makeText(MainActivity.this, editTextName.getText().toString(), Toast.LENGTH_SHORT).show();
			}
		});
		builder.setNegativeButton("cancle", null);
		builder.create().show();;
		
	}


列表dialog

列表对话框都是使用的AlertDialog创建

普通的列表对话框

使用的步骤:
1.创建一个AlertDialog.Builder对象
2.设置title、icon等
3.设置普通对话框使用setItems()方法
  4.调用builder的create方法创建一个Dialog对象
  5.调用dialog的show方法显示dialog
代码:
private void normalDialog() {
		AlertDialog.Builder builder=new AlertDialog.Builder(this);
		builder.setTitle("title").setIcon(R.drawable.ic_launcher);
		final String[] name=getResources().getStringArray(R.array.name);
		builder.setItems(R.array.name,new OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				Toast.makeText(MainActivity.this, name[which], Toast.LENGTH_LONG).show();
			}
		});
		builder.create().show();;
	}

单选列表对话框

使用步骤与普通的对话框一样,区别是在第3步使用setSingleChoiceItems()
代码:
private void singleChoiceDialog() {
		AlertDialog.Builder builder=new AlertDialog.Builder(this);
		builder.setTitle("title").setIcon(R.drawable.ic_launcher);
		final String[] sex=getResources().getStringArray(R.array.sex);
		builder.setSingleChoiceItems(R.array.sex, -1, new OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				position=which;
			}
		});
		builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				Toast.makeText(MainActivity.this, sex[position], Toast.LENGTH_LONG).show();
			}
		});
		builder.create().show();
	}
注意:
我们在使用单选对话框在下面的方法中只能知道那一个被选中了,
builder.setSingleChoiceItems(R.array.sex, -1, new OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				position=which;
			}
		});

当我们点击了确定按钮,才能取到选中的是那一个单选按钮,代码如下
builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				Toast.makeText(MainActivity.this, sex[position], Toast.LENGTH_LONG).show();
			}
		});

多选对话框

多选对话框与单选十分类似,区别是使用的setMultiChoiceItems设置显示的条目
private void multiChoiceDialog() {
		AlertDialog.Builder builder=new AlertDialog.Builder(this);
		builder.setTitle("title").setIcon(R.drawable.ic_launcher);
		final String[] aihao=getResources().getStringArray(R.array.aihao);
		final boolean[] isCheck=new boolean[aihao.length];
		builder.setMultiChoiceItems(R.array.aihao, null, new OnMultiChoiceClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which, boolean isChecked) {
				isCheck[which]=isChecked;
			}
		});
		builder.setPositiveButton("ok", new OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				StringBuffer sb=new StringBuffer();
				for(int i=0;i<isCheck.length;i++)
				{
					if(isCheck[i])
					{
						sb.append(aihao[i]);
					}
				}
				Toast.makeText(MainActivity.this, sb.toString(), Toast.LENGTH_LONG).show();
			}
		});
		builder.setNegativeButton("cancle", null);
		builder.create().show();
	}

适配器对话框

适配器对话框与普通的列表对话框类似,区别是在第三步使用setAdapter设置要显示的内容
代码;
private void adapterDialog() {
		AlertDialog.Builder builder=new AlertDialog.Builder(this);
		builder.setTitle("title").setIcon(R.drawable.ic_launcher);
		final String[] data=getResources().getStringArray(R.array.name);
		ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data);
		builder.setAdapter(adapter, new OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				Toast.makeText(MainActivity.this, data[which], Toast.LENGTH_SHORT).show();
			}
		});
		builder.create().show();
	}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值