弹出对话框之Dialog,你一定不知道这些

对于Dialog想必大家应该不陌生, 我们平长遇到的各种对话框就是Dialog了, 这个控件会在我们操作的任何界面弹出一个对话框, 且必须需要我们去操作它才可以关闭, 关于这个Dialog还是有许多地方值得我们去探讨的。

首先, 我们都知道最常用的对话框是这个AlertDialog, 不知道大家在使用这个控件的时候有没有注意到, 这个控件有两个包都包含它, 我们比较常用的是android.app.AlertDialog这个包下的, 但是在android.support.v7.app.AlertDialog 同样也有AlertDialog, 那么这两个有什么区别吗? 这里面是个小知识点,因为现在大家使用的安卓手机系统大多都在2.3以上, 所以不会太在意, 但是如果是在2.3版本以下, 假如我们使用了android.app.AlertDialog包下的AlertDialog, 那么实现的效果是这个样子的:

弹出对话框之Dialog,你一定不知道这些_第1张图片

这样的效果着实有点丑了, 有点落后, 但是如果我们使用v7包下的AlertDialog, 那么就能实现统一的风格了, 是这个样子的:

弹出对话框之Dialog,你一定不知道这些_第2张图片

这个效果还是好看的多。

我们接着说下一个问题, 我们在使用AlertDialog的时候是无法直接通过AlertDialog创建对象的, 这是为什么呢?让我们来看看它的源码:

弹出对话框之Dialog,你一定不知道这些_第3张图片


我们可以看到它的几个构造方法都是protected, 所以我们无法通过AlertDialog直接创建对象, 但是我们总归还是要用的啊, 所以Android系统为我们提供了Builder这个静态内部类来创建AlertDialog对象, 一般是如下格式:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
AlertDialog dialog = builder.create();

至于一个简单的弹出对话框的demo想必大家都会,这里不再写了, 大家可能会发现你平常在使用对话框的时候没有使用到creat这个方法去创建, 这是因为你还没有使用到对话框的自定义布局, 当你使用到自定义的布局的时候就必须使用AlertDialog dialog = builder.create();这种方式去创建对话框了。

那我们就来看看如何使用自定义布局, 首先你要自定义一个layout, 就是一个xml文件, 其实说白了就是以前的对话框是弹出系统默认的布局样式, 现在你自定义一个布局, 那么弹出的对话框就是你自定义的一个布局, 我们来看主要代码, 这里我的自定义布局名称为mylayout

弹出对话框之Dialog,你一定不知道这些_第4张图片

这里我们只需要创建一个AlertDialog对象, 然后使用dialog的setView方法为其填充布局, 然后再将这个AlertDialog显示出来就行了, 代码没什么难度, 同样的我们们可以为你自定义布局里面的控件添加一些监听事件去处理相关逻辑,运行如下:

弹出对话框之Dialog,你一定不知道这些_第5张图片


这就是关于对话框的一些知识, 如果你还想详细了解, 那就需要自己再下功夫研究了!


你可能感兴趣的:(Android旧文)