Dialog的使用

来源:互联网 发布:互刷流量软件 编辑:程序博客网 时间:2024/06/05 01:32

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,messagebuilder.setIcon(R.drawable.ic_launcher).setTitle("title").setMessage("messsage");//点击事件builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, "ok", Toast.LENGTH_SHORT).show();}});builder.setNegativeButton("cancle", null);//使用create得到一个dialog对象,调用dailog的show方法显示dialogbuilder.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() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic void onClick(DialogInterface dialog, int which) {position=which;}});builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {@Overridepublic 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() {@Overridepublic void onClick(DialogInterface dialog, int which) {position=which;}});

当我们点击了确定按钮,才能取到选中的是那一个单选按钮,代码如下
builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {@Overridepublic 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() {@Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked) {isCheck[which]=isChecked;}});builder.setPositiveButton("ok", new OnClickListener() {@Overridepublic 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() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, data[which], Toast.LENGTH_SHORT).show();}});builder.create().show();}




1 0
原创粉丝点击