一、概述
对话框是在当前界面弹出的一个小窗口,用于显示重要提示信息,提示用户输入信息,确认信息,或者某种状态,如下载进度,退出提示等等。一般情况下,用户要与对话框进行交互,然后返回到被遮盖的界面以继续运行当前的应用程序。
二、常见的对话框
确认对话框、单选按钮对话框、多选按钮对话框、列表对话框
三、AlertDialog常用方法
要创建一个AlertDialog,就要用到AlertDialog.Builder中的create()方法。
setTitle:设置标题
setIcon:设置图标
setMessage:设置内容
setView:设置自定义样式
setItems:设置对话框要显示的一个list,一般用于显示几个命令时
setMultiChoiceItems:设置对话框显示一系列的复选框
setSingleChoiceItems:设置单选按钮
setNeutralButton:添加普通按钮
setPositiveButton:添加确认按钮
setNegativeButton:添加取消按钮
四、确认对话框
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("提示");
builder.setMessage("窗口已经弹出");
builder.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(Activity7Dialog.this, "你选择了确定", Toast.LENGTH_SHORT).show();
}
});
AlertDialog dialog = builder.create();
dialog.show();</span>
效果:
五、单选对话框
<span style="white-space:pre"> </span>全局数组:String[] single_list = {"程序员","工程师","设计师","测试员"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("选择职位");
builder.setIcon(R.drawable.ic_launcher);
builder.setSingleChoiceItems(single_list, 0, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(Activity7Dialog.this, "你选择了第"+(which+1)+"项,"+single_list[which], Toast.LENGTH_SHORT).show();
}
});
AlertDialog dialog = builder.create();
dialog.show();</span>
效果:
六、多选对话框
<span style="white-space:pre"> </span>全局数组:String[] multi_list = {"爬山","游泳","跑步","散步"};
全局数组:int[] checked = new int[4];//记录选择
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("选择爱好");
builder.setIcon(R.drawable.ic_launcher);
builder.setMultiChoiceItems(multi_list, null, new OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if(isChecked){
checked[which] = 1; //选择项记录为1
}
else{
checked[which] = 0;
}
}
});
builder.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String hobby = "";
for(int i=0; i<4 ; i++){
if(checked[i] == 1){
hobby += multi_list[i]+" ";
}
}
Toast.makeText(Activity7Dialog.this, "你选择了:"+hobby, Toast.LENGTH_SHORT).show();<span style="white-space:pre"> </span>//清除选择
for(int i=0; i<4; i++){
checked[i] = 0;
}
}
});
builder.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {</span>
<span style="font-size:18px;"><span style="white-space:pre"> </span>//清除选择
for(int i=0; i<4; i++){
checked[i] = 0;
}
dialog.dismiss();
}
});
AlertDialog dialog = builder.create();
dialog.show();</span>
效果:
七、列表对话框
<span style="font-size:18px;"><span style="white-space:pre"> </span>全局数组:String[] item_list = {"技术部","销售部","人事部","财务部","监管部","行政部"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("选择部门");
builder.setIcon(R.drawable.ic_launcher);
builder.setItems(item_list, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(Activity7Dialog.this, "选择了:"+item_list[which], Toast.LENGTH_SHORT).show();
}
});
AlertDialog dialog = builder.create();
dialog.show();</span></span>
效果:
八、自定义对话框
<span style="font-size:18px;"> //获取自己的布局
LayoutInflater inflater = LayoutInflater.from(this);
//selfdialog.xml就是自己定义的对话框布局文件
View view = inflater.inflate(R.layout.selfdialog, null);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("请输入信息");
builder.setIcon(R.drawable.ic_launcher);
builder.setView(view);
AlertDialog dialog = builder.create();
dialog.show();</span></span>
自定义布局内容如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<EditText
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:hint="请输入内容" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="提交" />
</LinearLayout>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/pic1"/>
</LinearLayout>
效果: