Android 五种常用dialog的使用
Posted 森然献凉i
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 五种常用dialog的使用相关的知识,希望对你有一定的参考价值。
常规dialog
一般作为提示使用
xml文件
activity_main.xml
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/bt1"
android:text="常规对话框"
android:onClick="bt1">
</Button>
MainActivity.Java
/**
*常规对话框的点击事件
* @param view
*/
public void bt1(View view) {
new AlertDialog.Builder(this)
//图标
.setIcon(R.drawable.ic_launcher_background)
//标题
.setTitle("吃饭")
//不可点击外部区域取消对话框
.setCancelable(false)
//内容
.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();
}
效果图
带选项列表的dialog
一个选择类的对话框
xml文件
activity_main.xml
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/bt2"
android:text="带选项列表对话框"
android:onClick="bt2">
</Button>
MainActivity.Java
这个dialog为单选框,如需多选,setSingleChoiceItems方法替换为setMultiChoiceItems方法
/**
*带选项列表对话框的点击事件
* @param view
*/
public void bt2(View view) {
//定义一个字符串数组存放列表信息
String[]colors={"红","黄","蓝","绿","黑"};
new AlertDialog.Builder(this)
//不可点击外部区域取消对话框
.setCancelable(false)
//标题
.setTitle("选择一种颜色")
.setPositiveButton("ok", null)
//实现单选列表,第一个参数使用colors数据为选项,第二个参数为默认选中的位置(如不需要默认选中,则设为-1),第三个位置参数为该选项的点击事件
//如需多选则使用.setMultiChoiceItems()
.setSingleChoiceItems(colors, 0, new DialogInterface.OnClickListener() {
@Override
//第一个参数为调用这个对话框的本身,第二个参数为位置
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this, colors[i], Toast.LENGTH_SHORT).show();
}
})
.show();
}
效果图
自定义视图dialog
一个自己定义样式的dialog,这里我模拟了一个登录弹窗
需先在layout里创建一个xml文件,这里我命名为dialog_view
dialog_view.xml
<?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"
android:padding="20dp">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/user"
android:hint="用户名">
</EditText>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/paw"
android:hint="密码">
</EditText>
</LinearLayout>
xml文件
activity_main.xml
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/bt3"
android:text="自定义视图对话框"
android:onClick="bt3">
</Button>
MainActivity.Java
/**
* 自定义视图对话框
* @param view
*/
public void bt3(View view) {
//使用inflate方法,从一个XML的资源文件当中获取一个视图
View v=View.inflate(this,R.layout.dialog_view,null);
//获取dialog_view中的组件
final EditText eduser=v.findViewById(R.id.user);
final EditText edpaw=v.findViewById(R.id.paw);
new AlertDialog.Builder(this)
//标题
.setTitle("用户登录")
//不可点击外部区域取消对话框
.setCancelable(false)
//设置视图
.setView(v)
.setPositiveButton("登录", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//按钮点击时,获取控件中的数据
String username=eduser.getText().toString().trim();
String pawd=edpaw.getText().toString().trim();
//通过Toast输出
Toast.makeText(MainActivity.this, "用户名:"+username+"密码:"+pawd, Toast.LENGTH_SHORT).show();
}
})
.show();
}
效果图
带进度条的dialog
可用于加载等待
xml文件
activity_main.xml
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/bt4"
android:text="启动带进度条的对话框"
android:onClick="bt4">
</Button>
MainActivity.Java
/**
* 启动带进度条的对话框
* @param view
*/
public void bt4(View view) {
//创建一个进度条对话框
ProgressDialog progressDialog=new ProgressDialog(this);
//标题
progressDialog.setTitle("进度条对话框");
//设置当前进度
progressDialog.setProgress(30);
//设置样式为水平状进度条
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//不可点击外部区域取消对话框
progressDialog.setCancelable(false);
progressDialog.show();
new Thread(new Runnable() {
@Override
public void run() {
//for循环使进度条不断累加推进
for (int i=1;i<20;i++){
try {
//通过线程休眠是=使两次进度条修改时间之间间隔200毫秒
Thread.sleep(200);
}catch (InterruptedException e){
e.printStackTrace();
}
//获取当前的进度条加20轮,每轮前进5格
progressDialog.setProgress(progressDialog.getProgress()+5);
}
//完成后隐藏进度条
progressDialog.dismiss();
}
}).start();
}
效果图
日期选择dialog
用于生日选择,时间选择等
xml文件
activity_main.xml
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/bt5"
android:text="日期选择对话框"
android:onClick="bt5">
</Button>
MainActivity.Java
/**
* 日期选择对话框
* @param view
*/
public void bt5(View view) {
//Calendar日历类获取年月日的三个字段
Calendar calendar=Calendar.getInstance();
int year=calendar.get(Calendar.YEAR);
int month=calendar.get(Calendar.MONTH);
int day=calendar.get(Calendar.DAY_OF_MONTH);
//创建一个日期选择对话框,OnDateSetListener表示在日期选择当中会弹出一个onDateSet返回日期的年月日
new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
@Override
//onDateSet带回选中的年月日
public void onDateSet(DatePicker datePicker, int year, int month, int dayofminth) {
Toast.makeText(MainActivity.this, "选中了"+year+"年"+month+"月"+dayofminth+"日", Toast.LENGTH_SHORT).show();
}
//设置当前的年月日
},year,month,day).show();
}
效果图
结束
以上是关于Android 五种常用dialog的使用的主要内容,如果未能解决你的问题,请参考以下文章