AlertDialog详解

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/

点赞(54) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部