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();
}