1.普通对话框
//通过builder构建器来构造
AlertDialog.Builder builder=new Builder(this);
builder.setTitle("警告");
builder.setMessage("世界上最遥远的距离就是没有网");
builder.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
System.out.println("点击了确定按钮");
}
});
builder.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
System.out.println("点击了取消按钮");
}
});
//最后一步一定要记得和Toast一样 show出来
builder.show();
this和getApplicationContext()的区别
this获取的是Context子类的对象
getApplicatonContext()获取的是Context直接子类的对象
可以理解为getApplicatonContext()获取的是父类对象
this获取的是子类对象
父类有的子类一定有,子类有的父类不一定有。
所以this携带的信息更多。
用this可以告诉系统我要把对话框挂载到哪个activity上。
单选对话框
//点击按钮 弹出一个单选对话框
public void click2(View v){
//通过builder构建器来构造
AlertDialog.Builder builder=new Builder(this);
builder.setTitle("请输入你喜欢的课程");
final String items[]={"Android","ios","c","C++","html","c#"};
//-1表示没有条目被选中
builder.setSingleChoiceItems(items, -1, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//[1]把选中的条目取出来
String item=items[which];
Toast.makeText(getApplicationContext(), item, 1).show();
//[2]关闭对话框
dialog.dismiss();
}
});
//最后一步一定要记得和Toast一样 show出来
builder.show();
}
多选对话框
//点击按钮 弹出一个多选对话框
public void click3(View v){
//通过builder构建器来构造
AlertDialog.Builder builder=new Builder(this);
builder.setTitle("请选择你喜欢吃的水果");
final String items[]={"苹果","香蕉","西瓜","哈密瓜","梨","榴莲"};
checkedItems = new boolean[] {true,false,false,false,false,true};
builder.setMultiChoiceItems(items, checkedItems, new OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
}
});
builder.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//把选中的条目的数据取出来
StringBuffer sb = new StringBuffer();
for (int i = 0; i < checkedItems.length; i++) {
//判断一下选中的
if(checkedItems[i]){
String fruit=items[i];
sb.append(fruit+" ");
System.out.println(sb.toString());
}
}
Toast.makeText(getApplicationContext(),sb.toString(), 1).show();
dialog.dismiss();
}
});
//最后一步一定要记得和Toast一样 show出来
builder.show();
}
进度条对话框
//点击按钮 弹出一个进度条对话框
public void click4(View v){
final ProgressDialog dialog=new ProgressDialog(this);
dialog.setTitle("正在玩命加载中。。。");
//设置一下进度条的样式
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//最后一步 一定要记得show出来
dialog.show();
//创建一个子线程
new Thread(){public void run() {
//设置进度条最大值
dialog.setMax(100);
//设置当前进度
for (int i = 0; i <=100; i++) {
dialog.setProgress(i);
//睡眠一会儿
SystemClock.sleep(50);
}
//关闭对话框
dialog.dismiss();
};}.start();
}
自定义布局对话框
①首先定义对话框中的布局
input_distance_layout
<?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">
<EditText
android:id="@+id/et_distance"
android:textColor="#000"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"/>
</LinearLayout>
②将布局转换为View
View alertView = getLayoutInflater().inflate(R.layout.input_distance_layout, null);
③定义对话框
AlertDialog myDialog = new AlertDialog.Builder(this)
.setIcon(R.mipmap.distance)//设置标题的图片
.setTitle("请输入要查询的距离")//设置对话框的标题
.setView(alertView)
//设置对话框的按钮
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
})
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//关闭抽屉
parentLayout.closeDrawer(leftDrawer);
isLeftOpened=false;
dialog.dismiss();
EditText et_distance = alertView.findViewById(R.id.et_distance);
tv_input.setText("请在地图上单击选择中心点");
//开始缓冲查询
startSelfQuery(et_distance);
}
}).create();
myDialog.show();