1.普通对话框
一共有三个按钮,不设置的话不会显示。
public void normal(View v){
AlertDialog.Builder builder=new Builder(this);
builder.setTitle("我是普通对话框");
builder.setMessage("对话框要显示的具体内容");
//显示在按钮上的文字,第二个参数表示点击后执行的方法
builder.setPositiveButton("确定", new OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "确定", Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("取消",new OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "取消", Toast.LENGTH_SHORT).show();
}
});
//不调用不会显示
builder.show();
}
2.单选对话框
AlertDialog.Builder builder=new Builder(this);
builder.setTitle("你选择你喜欢的明星");
final String[] items = {"周星驰","tf-boys","刘德华","成龙"};
//第二个参数表示,默认选中的索引,1 表示tf-boys
builder.setSingleChoiceItems(items, 1, new OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
//which表示选中的项的索引
Toast.makeText(getApplicationContext(), items[which], Toast.LENGTH_SHORT).show();
//让当前对话框消失
dialog.dismiss();
}
});
builder.show();
3.多选对话框 public void multi(View v){
AlertDialog.Builder builder=new Builder(this);
builder.setTitle("你选择你喜欢的明星");
final String[] items = {"周星驰","tf-boys","刘德华","成龙"};
boolean[] checkedItems={true,false,false,false};
builder.setMultiChoiceItems(items,checkedItems , new OnMultiChoiceClickListener(){
public void onClick(DialogInterface dialog, int which,
boolean isChecked) {
Toast.makeText(getApplicationContext(), items[which]+isChecked, Toast.LENGTH_SHORT).show();
}
});
builder.setPositiveButton("确定", new OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "确定", Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
});
builder.show();
}
items等待选择的条目,checkdItems 表示哪个条目是默认选中的,可以用来记录选中状态,boolean数组元素个数要与items元素个数一样。
每次改变任何一个条目的选中状态,都会调用 onClick 方法,dialog表示当前对话框,which表示改变的条目索引,isChecked表示改变成为的状态。
实际上,一个builder可以组合使用,既有多选对话框,也有普通对话框。4.进度条对话框
final ProgressDialog dialog=new ProgressDialog(this);
//设置进度条样式水平
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setMax(100);
dialog.setTitle("正在玩命下载中...");
dialog.show();
new Thread(){
public void run(){
for(int i=0;i<=100;++i)
{
dialog.setProgress(i);
SystemClock.sleep(100);
}
dialog.dismiss();
}
}.start();
需要注意的问题:
在构建对话框时,使用的上下文必须使用this(activity),而不是getApplication()上下文。这是为了通知是在哪个activity中创建对话框,因为这个对话框也是activity的一部分,而不是上下文。
而Toast与此不同,它是一个系统级的显示控件,因此只需要随便传一个上下文即可。