您的位置:首页 > 移动开发 > Android开发

Android对话框AlertDialog

2014-10-24 20:34 134 查看
 一、4种常用的对话框
  AlertDialog:功能最丰富、实际应用最广泛的对话框。
  ProgressDialog:进度条对话框。
  DatePickerDialog:日期选择对话框。
  TimePickerDialog:时间选择对话框。
 二、AlertDialog对话框的结构以及创建步骤

AlertDialog对话框的功能很强大,它可以生成各种内容的对话框,但AlertDialog生成的对话框总有如下的结构。

      


从上面对话框的结构来看,创建一个对话框需要经过如下几步:

创建AlertDialog.Builder对象。
调用AlertDialog.Builder的setTitle()或者setCustomTitle()方法设置标题。

调用AlertDialog.Builder的setIcon()方法设置图标。
调用AlertDialog.Builder的相关设置方法设置对话框的内容。
调用AlertDialog.Builder的setPositiveButton()、setNegativeButton()或者setNeutralButton()方法添加按钮。
调用AlertDialog.Builder的create()方法创建AlertDialog对象,再调用AlertDialog对象的show()方法将该对话框显示出来。

上面的6个步骤中,第4个步骤最为灵活,也是很关键的一步,AlertDialog允许创建各种内容的对话框。

AlertDialog提供的6种方法来指定对话框的内容:

setMessage():设置对话框内容为简单文本内容。
setItems():设置对话框内容为简单列表项。
setSingleChoiceItems():设置对话框内容为单选列表项。
setMultieChoiceItems():设置对话框内容为多选列表项.
setAdapter():设置对话框内容为自定义列表项。
setView():设置对话框内容为自定义View。

三、实例展示

1、使用setMessage()方法显示提示消息的对话框,当点击按钮的时候,会弹出对话框。

btn_1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//创建一个AlertDialog.Builder对象
new AlertDialog.Builder(MainActivity.this)
//设置标题
.setTitle("简单对话框")
//设置图标
.setIcon(R.drawable.ic_launcher)
//设置简单文本内容
.setMessage("这是一个简单的对话框")
//设置确定按钮
.setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "你单击了确定按钮", Toast.LENGTH_SHORT).show();
}
})
//设置取消按钮
.setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "你单击了取消按钮", Toast.LENGTH_SHORT).show();
}
}).create().show();
}
});
<span style="font-size:14px;">
</span>


2、使用setItem()创建简单列表对话框,调用该方法时需要传入一个数组或者数组资源的资源ID。

//定义一个数组作为参数
final String[] items = {"北京","上海","广州","西安"};
//简单列表对话框
btn_2.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
new AlertDialog.Builder(MainActivity.this)
.setTitle("简单列表对话框")
.setIcon(R.drawable.ic_launcher)
.setItems(items, new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "你单击了"+items[which]+"选项", Toast.LENGTH_SHORT).show();
}
})
.setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "你单击了确定按钮", Toast.LENGTH_SHORT).show();
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "你单击了取消按钮", Toast.LENGTH_SHORT).show();
}
}).create().show();
}


3、使用setSingleChoiceItems()方法创建单选列表对话框,调用该方法的时候可以传入数组、Cursor、ListAdapter作为参数。

btn_3.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
new AlertDialog.Builder(MainActivity.this)
.setTitle("单选列表对话框")
.setIcon(R.drawable.ic_launcher)
.setSingleChoiceItems(items, 1,new DialogInterface.OnClickListener() {

4000

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "你单击了"+items[which]+"选项", Toast.LENGTH_SHORT).show();
}
})
.setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "你单击了确定按钮", Toast.LENGTH_SHORT).show();
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "你单击了取消按钮", Toast.LENGTH_SHORT).show();
}
}).create().show();
}
});


4、使用setMultieChoiceItems()方法创建多选项对话框,调用该方法的时候可以参入数组、Cursor作为参数.

btn_4.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
new AlertDialog.Builder(MainActivity.this)
.setTitle("多选列表对话框")
.setIcon(R.drawable.ic_launcher)
.setMultiChoiceItems(items,new boolean[]{true,false,false,true},null)
.setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "你单击了确定按钮", Toast.LENGTH_SHORT).show();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "你单击了取消按钮", Toast.LENGTH_SHORT).show();
}
}).create().show();
}
});


5、使用setAapter()方法创建自定义列表对话框。调用该方法的时候需要传入一个Adapter作为参数.

btn_5.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
new AlertDialog.Builder(MainActivity.this)
.setTitle("自定义列表对话框")
.setIcon(R.drawable.ic_launcher)
.setAdapter(new ArrayAdapter<String>(MainActivity.this, R.layout.line,items), null)
.setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "你单击了确定按钮", Toast.LENGTH_SHORT).show();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "你单击了取消按钮", Toast.LENGTH_SHORT).show();
}
}).create().show();
}
});


6、使用setView()方法创建自定义View的对话框。调用该方法的时候接受一个View组件,该View组件将作为对话框的内容。

btn_6.setOnClickListener(new OnClickListener() {
TableLayout loginForm  = (TableLayout) getLayoutInflater().inflate(R.layout.login, null);
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
new AlertDialog.Builder(MainActivity.this)
.setTitle("自定义对话框")
.setIcon(R.drawable.ic_launcher)
.setView(loginForm)
.setPositiveButton("登陆", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub

Toast.makeText(MainActivity.this, "此处执行登陆处理", Toast.LENGTH_SHORT).show();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "此处执行取消处理", Toast.LENGTH_SHORT).show();
}
}).create().show();
}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息