在《Android Studio中AlertDialog的使用方法4-1》中提到,使用AlertDialog的静态类builder来操作对话框,通过builder可以设置对话框的标题、内容以及显示对话框。除此之外,还可以通过builder来设置对话框的标题图标、是否消失以及显示布局等。

1 设置标题图标

通过builder调用setIcon()来设置对话框的标题图标,如图1所示。

android AlertDialog 样式 android studio alertdialog_setView

图1 设置标题图标

从图1中可以看出,setIcon()方法的参数是图标的ID。其效果如图2所示。

android AlertDialog 样式 android studio alertdialog_Builder_02

图2 显示标题图标的窗口

相关链接1 R文件,R文件定义了R类。当Android应用程序被编译后,会自动生成一个R类,包含了所有res目录下的资源ID。在代码中使用这些资源ID时,通过R类调用这些资源ID。

相关链接2 R.mipmap,是R类中定义的静态final类,如图3所示。

android AlertDialog 样式 android studio alertdialog_setView_03

图3 mipmap类

 从图3可以看到,R.mipmap中定义了两个静态final变量,分别表示两个图标资源的ID。

相关链接3 mipmap和drawable的区别,mipmap主要包含应用程序所需的图标(ICON),而drawable中包含的时应用程序所需的图片(jpg、png等)。

2 设置窗口是否可以消失

通过builder调用setCancelable()方法,设置当点击对话框以外的区域,对话框是否消失,如图4所示。当参数是true时,对话框消失;当参数是false时,对话框不消失。

android AlertDialog 样式 android studio alertdialog_setView_04

图4 设置对话框是否消失

从图4中可以看到,此时将对话框设置为不消失。

3 设置对话框的布局

设置对话框的布局主要分为三个步骤,第一步是创建布局,第二步是获取该布局;第三步是在对话框中设置布局。

3.1 创建布局

创建一个名为alertdialog_layout.xml的线性布局,如图5所示。

android AlertDialog 样式 android studio alertdialog_android studio_05

图5 线性布局

 从图5中可以看出,在该线性布局中包含了EditText和Button两个视图。

3.2 获取布局

接下来在主程序中通过LayoutInflater类获取布局。LayoutInflater类的主要作用是将布局XML文件实例化,使其变为视图对象。其代码如图6所示。

android AlertDialog 样式 android studio alertdialog_setView_06

图6 获取布局

 其中,通过LayoutInflater类的静态方法from()获取给定上下文的LayoutInflater,之后通过获取到的LayoutInflater调用inflate()方法获取指定的布局,该方法的第一个参数指定了xml布局文件的ID,第二个参数指定的是该布局的父布局,null表示该布局没有父布局。

3.3 使用布局

通过builder调用setView()方法使用该布局,如图7所示。

android AlertDialog 样式 android studio alertdialog_AlertDialog_07

图7 使用布局

 从图7中可以看出,setView()的参数alertdialog_view即为“3.2获取布局”中通过inflate()方法获取布局。

对话框中使用布局的效果如图8所示。

android AlertDialog 样式 android studio alertdialog_AlertDialog_08

图8 使用布局效果