AlertDialog是Android平台常用的一种对话框。它弹出来是为了提示用户一些信息,或者获取用户的一些输入。AlertDialog最常见的几种类型包括:普通提示对话框、带单选按钮的对话框、带复选框的对话框、带输入框的对话框、进度条对话框等。下面就来详细介绍一下AlertDialog的使用方法,以及一些常见的用法案例。
一、创建AlertDialog
AlertDialog是通过AlertDialog.Builder类来创建并配置的。我们需要创建AlertDialog.Builder对象,然后调用它的各种方法来设置AlertDialog的属性,最后再调用create()方法来创建AlertDialog实例。下面是一个创建普通提示对话框的例子:
```
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("提示");
builder.setMessage("确定退出吗?");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
builder.setNegativeButton("取消", null);
builder.show();
```
在这个例子中,我们首先创建了一个AlertDialog.Builder对象。然后,我们调用setTitle()方法设置对话框的标题,setMessage()方法设置对话框的内容,setPositiveButton()方法设置确定按钮的文本和点击事件,setNegativeButton()方法设置取消按钮的文本和点击事件,最后调用show()方法显示对话框。
二、创建带列表的AlertDialog
有时候我们需要创建一个带列表的AlertDialog,让用户选择其中一个选项。这种对话框可以通过AlertDialog.Builder的setItems()方法来创建。下面是一个带单选按钮的对话框的例子:
```
final String[] items = new String[]{"男", "女"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("选择性别");
builder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, items[which], Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
});
builder.show();
```
在这个例子中,我们创建了一个包含两个选项的列表,在setSingleChoiceItems()方法中,第一个参数是一个字符串数组,其中每个字符串就是一个选项的文本,第二个参数表示默认选中的选项,第三个参数是一个OnItemClickListener对象,当用户点击某个选项时,会触发OnClick()方法,我们在OnClick()方法中弹出一个Toast显示用户选择的是哪个选项,并使用dialog.dismiss()方法关闭对话框。
三、创建带复选框的AlertDialog
有时候我们需要创建一个带复选框的AlertDialog,让用户选择其中的多个选项。这种对话框可以通过AlertDialog.Builder的setMultiChoiceItems()方法来创建。下面是一个带复选框的对话框的例子:
```
final String[] citys = new String[]{"北京", "上海", "广州", "深圳"};
final boolean[] checkedItems = new boolean[]{false, false, false, false};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("选择城市");
builder.setMultiChoiceItems(citys, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
checkedItems[which] = isChecked;
}
});
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
StringBuilder sb = new StringBuilder();
for(int i = 0; i < citys.length; i++){
if(checkedItems[i]){
sb.append(citys[i] + ",");
}
}
String result = sb.toString();
if(result.length() > 0){
result = result.substring(0, result.length() - 1);
}
Toast.makeText(MainActivity.this, result , Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("取消", null);
builder.show();
```
在这个例子中,我们创建了一个包含四个选项的复选框列表,在setMultiChoiceItems()方法中,第一个参数是一个字符串数组,其中每个字符串就是一个选项的文本,第二个参数是一个布尔型数组,它表示每个选项是否被选中,第三个参数是一个OnMultiChoiceClickListener对象,当用户点击某个选项时,会触发OnClick()方法,我们在OnClick()方法中设置checkedItems数组中响应选项的值。在确定按钮上,我们遍历checkedItems数组,将选中的所有城市的名字以英文逗号隔开的形式输出。
四、创建带输入框的AlertDialog
有时候我们需要创建一个带输入框的AlertDialog,让用户输入一些信息。这种对话框可以通过AlertDialog.Builder的setView()方法和实现自己的View来实现。下面是一个带输入框的对话框的例子:
```
LayoutInflater inflater = getLayoutInflater();
final View dialogView = inflater.inflate(R.layout.dialog_custom, null);
final EditText etName = (EditText) dialogView.findViewById(R.id.et_name);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("自定义对话框");
builder.setView(dialogView);
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String name = etName.getText().toString();
Toast.makeText(MainActivity.this, "您输入的是:" + name, Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("取消", null);
builder.show();
```
在这个例子中,我们首先使用LayoutInflater类来加载自定义的布局文件(dialog_custom.xml)作为AlertDialog的View,然后通过findViewById()方法找到其中的EditText控件。在点击确定按钮时,我们获取EditText中用户输入的文本,并弹出一个Toast显示出来。
五、创建进度条对话框
有时候我们需要创建一个带进度条的对话框,在执行一些耗时操作时,让用户看到进度条的变化。这种对话框可以通过ProgressDialog类来实现。下面是一个带进度条的对话框的例子:
```
final ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setTitle("加载中");
progressDialog.setMessage("请稍候...");
progressDialog.setCancelable(false);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setMax(100);
progressDialog.show();
new Thread(new Runnable() {
@Override
public void run() {
for(int i = 1; i <= 100; i++){
try {
Thread.sleep(50);
progressDialog.setProgress(i);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
progressDialog.dismiss();
}
}).start();
```
在这个例子中,我们首先创建一个ProgressDialog对象,并调用setTitle()方法设置它的标题,setMessage()方法设置它的文本内容,setCancelable(false)方法设置它不可被取消,setProgressStyle()方法设置进度条的样式,setMax()方法设置进度条的最大值,show()方法显示进度条对话框。在新线程中,我们模拟一个耗时的操作,每隔50毫秒改变进度条的进度,当循环完成后,我们通过progressDialog.dismiss()方法关闭对话框。
思考:
AlertDialog作为Android平台的常用对话框之一,有着广泛的应用场景,可以用于信息提示、用户的单选或多选、用户的输入、进度条提示等方面。在开发移动应用时,掌握AlertDialog的创建方法和使用技巧,可以提高编程效率和用户体验。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/
发表评论 取消回复