在Android开发当中,在界面上弹出一个Dialog对话框使我们经常需要做的,本篇随笔将详细的讲解Dialog对话框这个概念,包括定义不同样式的对话框。
一、Dialog
我们首先来看看android官方文档对Dialog的介绍
A dialog is a small window that prompts the user to make a decision or enter additional information. A dialog does not fill the screen and is normally used for modal events that require users to take an action before they can proceed.
dialog就是一个在屏幕上弹出一个可以让用户做出一个选择,或者输入额外的信息的对话框,一个对话框并不会沾满我们整个的屏幕,并且通常用于模型事件当中需要用户做出一个决定后才会继续执行。
Dialog类是dialog对话框的基类,但是我们应该避免直接使用这个类来实例化一个dialog对话框,我们应当使用其子类来得到一个对话框:
java.lang.Object
↳ android.app.Dialog
Known Direct Subclasses
AlertDialog, CharacterPickerDialog, MediaRouteChooserDialog, MediaRouteControllerDialog, Presentation
Known Indirect Subclasses
DatePickerDialog, ProgressDialog, TimePickerDialog
我们看到,Dialog有很多的子类实现,所以我们要定义一个对话框,使用其子类来实例化一个即可,而不要直接使用Dialog这个父类来构造。
二、AlertDialog
今天我们重点要来了解的就是AlertDialog对话框,我们看到,AlertDialog是Dialog的一个直接子类。
使用AlertDialog,我们可以显示一个标题,最多3个按钮操作,以及一组选择框或者是自己定义的弹出框。
这里借用android的官方文档提供的一个图来看看AlertDialog框的组成:
①区域1那里就是定义弹出框的头部信息,包括标题名或者是一个图标。
②区域2那里是AlertDialog对话框的content部分,在这里我们可以设置一些message信息,或者是定义一组选择框,还可以定义我们自己的布局弹出框。
③区域3那里使我们的Action Buttons部分,这里我们可以定义我们的操作按钮。
说到Action Buttons这里要特别注意一下:
在AlertDialog中,定义按钮都是通过 setXXXButton 方法来完成,其中一共有3种不同的Action Buttons供我们选择:
1.setPositiveButton(CharSequence text, DialogInterface.OnClickListener listener)这是一个相当于OK、确定操作的按钮。
2.setNegativeButton (CharSequence text, DialogInterface.OnClickListener listener)这是一个相当于取消操作的按钮。
3. setNeutralButton (CharSequence text, DialogInterface.OnClickListener listener)这个是相当于一个忽略操作的按钮。
我们每一种action buttons最多只能出现一个,即弹出对话框最多只能出现一个PositiveButton。
接下来我们通过一个一个的具体实例来看看我们常用的几种AlertDialog对话框。
1.弹出一个警告框,并有三个按钮可选择
我们来看看代码部分:
button.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// 通过AlertDialog.Builder这个类来实例化我们的一个AlertDialog的对象
AlertDialog.Builder builder = n