一、使用AlertDialog.Builder创建对话框需要了解以下几个方法:
setTitle :为对话框设置标题
setIcon :为对话框设置图标
setMessage:为对话框设置内容
setView : 给对话框设置自定义样式
setItems & setSingleChoiceItems:设置对话框要显示的一个list,一般用于显示几个命令时
setMultiChoiceItems :用来设置对话框显示一系列的复选框
setNeutralButton :普通按钮setPositiveButton :给对话框添加"Yes"按钮
setNegativeButton :对话框添加"No"按钮
create : 创建对话框
show :显示对话框
二、创建如下对话框
Dialog alertDialog = new AlertDialog.Builder(this). setTitle("确定删除?"). setMessage("您确定删除该条信息吗?"). setIcon(R.drawable.ic_launcher). setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub
//按确定后的操作
} }). setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub
//按取消后的操作 } }). setNeutralButton("查看详情", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }). create(); alertDialog.show();
三、创建列表对话框
final String[] items={"删除","打开","复制","剪切"};
final Dialog ad=new AlertDialog.Builder(this). setTitle("文件选项"). setItems(items,new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), "已选择"+items[which], Toast.LENGTH_SHORT).show(); } }).
create(); btn1.setOnClickListener(new OnClickListener(){ public void onClick(View v){ ad.show(); }
注意:(1)一个方法A中定义的变量在另一个方法B中要被调用,必须为final,即使B在A方法的里面。
(2)items[which]:列表项中被选择的项
(3)将setItems(items,new DialogInterface.OnClickListener() {})替换为
setSingleChoiceItems(items,2,new DialogInterface.OnClickListener(){})则为单项按钮,2代表默认选择第3个,-1代表默认不选择。
(4)如果new AlertDialog.Builder(this).出现“ constructor AlertDialog.Builder(new View.OnClickListener(){}) is undefined”的错误提示
在“this”前面加上本Activity名称就行了
四、自定义对话框样式
(1)给对话框添加一个控件,如EdiText,只需 .setView(new EditText(this))
EditText name=new EditText(this); Dialog alertDialog =new AlertDialog.Builder(ReadText.this). setTitle("重命名"). setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }).
setView(name).
create(); alertDialog.show();
(2)给Dialog设计布局文件:rename_dialog.xml,布局文件只涉及对话框的中间部分,不改变title和button
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android"> <EditText android:id="@+id/rename_editText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="14.0dip" android:layout_marginTop="22.0dip" android:layout_marginRight="14.0dip" android:layout_marginBottom="64.0dip" android:singleLine="true" /> </LinearLayout>
代码部分
LayoutInflater factory = LayoutInflater.from(ReadText.this);
//得到自定义对话框
View DialogView = factory.inflate(R.layout.rename_dialog, null);
final EditText name=(EditText)DialogView.findViewById(R.id.rename_editText);//初始化对话框组件
name.setText(Title_Name.getText().toString());
name.selectAll();//让输入框文本全选
Dialog alertDialog =new AlertDialog.Builder(ReadText.this).
setTitle("重命名").
setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
//按确定后的操作
}
}).
setView(DialogView).create();
alertDialog.show();