Android 五种常用的对话框
第一步:安卓界面布局
添加5个按钮,点击可显示不同的对话框效果
布局代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
tools:context=".MainActivity">
<Button
android:id="@+id/b1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:text="第一种对话框"/>
<Button
android:id="@+id/b2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:text="第二种对话框"/>
<Button
android:id="@+id/b3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:text="第三种对话框"/>
<Button
android:id="@+id/b4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:text="第四种对话框"/>
<Button
android:id="@+id/b5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:text="第五种对话框"/>
</LinearLayout>
界面截图:
第二步:实现功能
第一种对话框(信息对话框),界面截图:
代码如下:
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new AlertDialog.Builder(MainActivity.this)
.setIcon(R.mipmap.wx)//设置图标
.setTitle("删除记录确认")//设置标题
.setMessage("是否删除该记录")//设置内容
.setPositiveButton("是", new DialogInterface.OnClickListener() {//点击是的监听事件
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this,"删除记录成功",Toast.LENGTH_SHORT).show();
}
})
.setNegativeButton("否", new DialogInterface.OnClickListener() {//点击否的监听事件
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this,"取消删除记录",Toast.LENGTH_SHORT).show();
}
})
.show();//显示
}
});
第二种对话框(选择对话框),界面截图:
代码如下:
b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final String[]color={"Green","Red","Blue","Yellow","White"};//添加一个数组来保存内容
new AlertDialog.Builder(MainActivity.this)
.setTitle("请选择颜色")//设置标题
.setSingleChoiceItems(color, 0, new DialogInterface.OnClickListener() {//显示内容,并添加监听事件
@Override
public void onClick(DialogInterface dialogInterface, int i) {
switch(color[i])
{
case "Green":
Toast.makeText(MainActivity.this,"Green",Toast.LENGTH_SHORT).show();
break;
case "Red":
Toast.makeText(MainActivity.this,"Red",Toast.LENGTH_SHORT).show();
break;
case "Blue":
Toast.makeText(MainActivity.this,"Blue",Toast.LENGTH_SHORT).show();
break;
case "Yellow":
Toast.makeText(MainActivity.this,"Yellow",Toast.LENGTH_SHORT).show();
break;
case "White":
Toast.makeText(MainActivity.this,"White",Toast.LENGTH_SHORT).show();
break;
}
}
})
.show();//显示
}
});
第三种对话框(自定义对话框),界面截图:
在实现功能之前,对话框要先自定义布局,首先创建一个xml文件来布局当前的对话框,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:padding="20dp"
android:layout_height="match_parent">
<EditText
android:id="@+id/e1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:hint="用户名"/>
<EditText
android:id="@+id/e2"
android:layout_marginTop="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="密码"/>
</LinearLayout>
代码如下:
b3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
View view1=View.inflate(MainActivity.this,R.layout.diglog,null);//找到自定义对话框的xml文件
final EditText e1=view1.findViewById(R.id.e1);//用户名编辑框绑定ID
final EditText e2=view1.findViewById(R.id.e2);//密码编辑库绑定ID
new AlertDialog.Builder(MainActivity.this)
.setTitle("自定义对话框")//设置标题
.setCancelable(false)//点击屏幕空白处,对话框不会消失
.setView(view1)//设置布局
.setPositiveButton("登陆", new DialogInterface.OnClickListener() {//点击登陆的监听事件
@Override
public void onClick(DialogInterface dialogInterface, int i) {
String user=e1.getText().toString().trim();//得到用户名
String password=e2.getText().toString().trim();//得到密码
Toast.makeText(MainActivity.this,"用户名:"+user+"\n"+"密码:"+password,Toast.LENGTH_SHORT).show();
}
})
.show();//显示
}
});
第四种对话框(带进度条的对话框),界面截图:
代码如下:
b4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final ProgressDialog progressDialog=new ProgressDialog(MainActivity.this);//定义进度条对话框
progressDialog.setTitle("带对话框的进度条");//设置标题
progressDialog.setProgressStyle(progressDialog.STYLE_HORIZONTAL);//垂直进度条样式
progressDialog.setCancelable(false);//点击空白处,对话框不消失
progressDialog.show();//显示
new Thread(new Runnable() {//开启多线程让进度条0.1秒滑动一次
@Override
public void run() {
for (int i=0;i<=100;i++)//从0到100
{
try {
Thread.sleep(100);//0.1秒更新一次
}
catch (Exception e)
{
e.printStackTrace();
}
progressDialog.setProgress(i);
}
progressDialog.dismiss();//当进度条达到100%时,对话框消失
}
}).start();//开启多线程
}
});
第五种对话框(日期对话框),界面截图:
代码如下:
b5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Calendar calendar=Calendar.getInstance();//定义日期控件
final int year=calendar.get(Calendar.YEAR);//获取年
final int month=calendar.get(Calendar.MONTH);//获取月
final int day=calendar.get(Calendar.DAY_OF_MONTH);//获取日
new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {//点击确定的监听事件
@Override
public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
Toast.makeText(MainActivity.this,i+"年"+i1+"月"+i2+"日",Toast.LENGTH_SHORT).show();
}
},year,month,day).show();//显示内容
}
});