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

摘要:
让我们进入下一个问题。使用AlertDialog时,我们不能直接通过AlertDialog创建对象。为什么?
对于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张


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


免责声明:文章转载自《弹出对话框之Dialog,你一定不知道这些》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Centos 7 配置邮件发送多线程中Object的wait(),notify()和Condition的wait()和singal()对锁的关联下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

maximo功能修改笔记

      经过前几次的简单的修改系统功能,对maximo的bean开发已经有了一定了解,现在是耗时近两个礼拜来修改了一项系统功能,所用到的知识 Bean Fld, 下面我认真总结修改功能过程中的学到的知识: 目标效果一:          点击页面上新增的按钮,弹出一个dialog,然后在dialog里面可以进行多选,然后点击 “确定” 后,在当前的记录...

android——处理Google play因WebView SSL Error Handler alerts被拒的问题

    最近app上线,由于上述问题,被google市场给拒了。 看到这个,点进Google help Center article,应该知道问题所在了。直接在项目里找到使用webview的地方。找到webviewClient ,看看你有没有处理onReceivedSslError方法。怎么处理的。是不是按照规范。MD,要忙了。直接贴代码 public...

dialog参数、方法以及事件

参数(options) DOM方式初始化dialog的,推荐使用集合属性data-options定义参数,如果使用data属性定义参数,注意转换成对应的名称。 名称 类型 默认值 描述 id string dialog [必选]弹窗的ID,如果指定重复,将覆盖现有的ID相同弹窗 title string New Dialog [可选]弹窗打开后...

让 el-dialog 居中,并且内容多的时候内部可以滚动

.el-dialog { position: absolute; top: 50%; left: 50%; margin: 0 !important; transform: translate(-50%, -50%); max-height: calc(100% - 30px); max- calc(...

ElementUI el-dialog中打开一个新的el-dialog(Vue子组件定义变量的一个坑)

先上效果图: 用户点击到文本框内即可查看Guss的详情 这是el-dialog里面套着一个el-dialog,我去年写过一篇博客是使用ifame标签来实现el-dialog里面嵌套一个div的,随着开发经验增加。。。发现用组件化即可很完美的解决dialog里面嵌套dialog的问题。 请务必注意!dialog的放置位置! 在这个Guss的父组件就是图中...

Android 开发之自定义Dialog及UI的实现

我们在开发中,经常会自定义Dialog,因为原生的AlertDialog无法满足我们的需求,这个时候就需要自定义Dialog,那么如何自定义呢,其实不难,就是有点繁琐而已。也就是自定义一个UI的xml文件,然后用setContentView方法来自定义设置。最近开发做了个小例子,特此分享记录出来给大家。 Dialog效果如下: 创建对话框类实现如下: i...