在 Android 日常的开发中,Dialog 使用是比较广泛的。无论是提示一个提示语,还是确认信息,还是有一定交互的(弹出验证码,输入账号密码登录等等)对话框。

而我们去看一下原生的对话框,虽然随着 Android 版本的更新,变得比较好看了,但是,一个 App 往往都会有自己的风格,都会定义一个或几个和 App 整体风格保持一致的 Dialog,这样显得好看一点。也比较令人赏心悦目,下面就来看看怎么自定义一个 Dialog。

Android 原生的 Dailog 的创建是以建造者的模式进行的,需要什么就往上面加,这样可以很灵活的定义自己所需要的,但在这里,我们采用一个自定义的 XML 布局文件,给Dialog设置相应的 View 来起到最大程度的自定义 Dialog 。

下面就来看一下最简单的提示性Dialog怎么写吧!

就先来看看布局文件

布局文件写的比较简单,整体是一个相对布局,上面一个标题,标题右侧一个关闭的图标,然后中间是提示内容的TextView,下面是确定和取消两个按钮。

这里只是最简单的一个对话框,自己可以根据项目的需要自定义出自己想要的,这里写布局文件就好像写Activity的布局文件一样。这里我比较懒惰,整体的背景是一个圆角的 .9 的图片,还有确认和取消都是以 .9 的图片作为背景。实际项目中,有 .9 的可以使用,没有可以自己自定义一个 Drawable 也可以实现圆角,当然,自己自定义的话写的时候麻烦一点,后期想怎么改就怎么改,自由度会比 .9 会高很多很多。

布局文件看完来看看代码怎么写:

代码不多,总共不超过 100 行,也有零星的注释可看,下面就整体的解释一下代码。

首先这是一个Dialog,那么首先要继承自Dialog。

19-29行是前面 xml 布局文件上的一些控件,以及他们需要设的值,还有一个 Dialog 的确定取消的监听的回调接口,这个监听的回调接口具体可以看100-111行,里面注释也写的比较明白了。

31行和36行是构造函数。31行的构造函数没什么。直接调用super去执行父类的构造方法。36行的构造方法就完全自定义的了,里面分别接收了标题、提示内容、确定和取消按钮的字样,最后是一个确定和取消的监听的回调。

47行开始是onCreate()函数,开始是 setTheme() 设置整个 Dialog 的主题,然后是 setContentVIew() 设置其对应的 View。然后是初始化 Dialog 上的各个控件,具体看79行的这个初始化的方法,方法体里面的东西写的很简单了,不再解释。接下来是 Dialog 上几个可点击的按钮对应的点击事件。关闭按钮就直接关闭了,确定和取消就执行回调,这里需要补充的是:执行listener.onSure() 和 listener.onCancel() 的时候先要判断一下 listener 是不是空的,如果不是空才去调用它,这点在写代码的时候忘了加上去。整体就是这样,没什么了。

前面代码涉及到一个Theme,下面看一下Theme的内容:

这里可以根据自己的需要去设置不同的属性,其中标题这些是肯定不需要的了,因为我们整个都自定义,标题自然就不要了。

具体还有什么属性可以加的,自己去探索一下吧!

最后来看看怎么使用,写完了就得用,看不到效果谁知道会是怎样,对吧。

就这样用,其实第一行(已被注释掉)那种用法对应的就是第一个构造函数的用法。也可以先看看效果如何。

然后第二种用法就是对应我们的第二个构造函数的,这里有一个回调,当我们点击确定的时候弹一个toast,取消也相应的弹一个,其他没什么了。

这里为什么要采取回调的方式呢?

用回调就是为了可以高度的自定义,如果你写死在 Dialoag 类中的话,就显得单一性了,要对不同的 Dialog 做不同的操作的时候就GG了。所以,这就是为什么要采取回调的方式来做。

整个Dialog写完了,来看看效果图:

整个 Dialog 到此结束!

2016-10-21

Android自定义 Dialog 对话框

Android自定义Dialoghttp://www.cnblogs.com/and_he/archive/2011/09/16/2178716.html Android使用自定义AlertDialo ...

Android自定义Dialog(美化界面)

前言:在做项目的时候,发现dialog界面太丑陋,从csdn上下载了一份自定义dialog的源码,在他的基础上对界面进行美化...有需要的朋友可以直接拿走 效果图如下: 主要代码: /** * 自定义 ...

Android自定义Dialog及其布局

实际项目开发中默认的Dialog样式无法满足需求,需要自定义Dialog及其布局,并响应布局中控件的事件. 上效果图: 自定义Dialog,LogoutDialog: 要将自定义布局传入构造函数中, ...

android 自定义Dialog背景透明及显示位置设置

先贴一下显示效果图,仅作参考: 代码如下: 1.自定义Dialog public class SelectDialog extends AlertDialog{ public SelectDialog ...

Android自定义Dialog

Android开发过程中,常常会遇到一些需求场景——在界面上弹出一个弹框,对用户进行提醒并让用户进行某些选择性的操作, 如退出登录时的弹窗,让用户选择“退出”还是“取消”等操作. Android系统提 ...

android 自定义Dialog去除黑色边框

在自定义Dialog时显示的界面中老是有黑色的边框,下面就介绍使用style去除黑色边框方法. 首先在values/styles定义自定义样式:

题意:给定一个正整数序列,操作是1.区间赋值,2.区间大于x的数与x取gcd,最后输出操作后的序列 用平衡树维护相同数组成的连续段,每次操作至多增加两个连续段,操作2记录一下区间最小值然后暴力修改,每 ...

实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告

一.实验要求 1.没有Linux基础的同学建议先学习 课程 2.完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报 ...

android如何自定义dialog,Android—自定义Dialog相关推荐

  1. android 之Dialog的多种Dialog对话框(以及反射在自定义对话框的运用)

    实际效果: 实例代码: 一个"启动初始Activity.xml" 一个弹出的Activity 业务逻辑代码: package com.hsj.example.alertdialog ...

  2. android 自定义透明 等待 dialog,Android自定义Dialog内部透明、外部遮罩效果

    Android自定义Dialog内部透明.外部遮罩效果 发布时间:2020-09-09 03:01:41 来源:脚本之家 阅读:117 作者:zst1303939801 本文实例为大家分享了Andro ...

  3. android 获取对话框对象,Android 基本Dialog和自定义Dialog

    Android 基本Dialog和自定义Dialog Dialog类是对话框的基类,但你应该避免直接实例化Dialog ,可以使用子类 1.AlertDialog 此对话框可以显示标题,最多三个按钮, ...

  4. android activity传值到dialog,android 自定义AlertDialog 与Activity相互传递数据

    **主要实现功能:** 1.从Activity的TextView中获取字符串设置到AlertDialog的TextView和EditText中 2.将AlertDialog的EditText中的值设置 ...

  5. android常用窗口动画,android 自定义dialog,窗口动画,

    自定义dialog窗口,根据坐标可随意设置dialog显示位置,实现了窗口弹出动画 Java代码: package com.sunxu.org.IndividualityDialog; import ...

  6. Android 对话框(Dialog) 及 自定义Dialog

    Activities提供了一种方便管理的创建.保存.回复的对话框机制,例如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog( ...

  7. android倒计时dialog,自定义带倒计时的Dialog

    1.[文件] CustomDiaglog.rar ~ 56KB     下载(206) 2.[图片] 豌豆荚截图20121103224745.png 3.[代码]Dialog核心代码 package ...

  8. Android弹出自定义Dialog,android自定义Dialog实现底部弹窗

    android自定义Dialog实现底部弹窗 拿到这个需求,很多人都是直接想用popWindow 实现,但是这样的效果我们完全可以根据系统的Dialog 自定义一个. AlertDialog.Buil ...

  9. android 自定义带输入框的dialog,Android 基本Dialog和自定义Dialog

    Android 基本Dialog和自定义Dialog Dialog类是对话框的基类,但你应该避免直接实例化Dialog ,可以使用子类 1.AlertDialog 此对话框可以显示标题,最多三个按钮, ...

最新文章

  1. 3dsmax biped 骨骼姿势 对称操作
  2. 出现adb连接不上的解决办法(转载)
  3. Xilinx SDK使用教程
  4. cnn识别mnist、Fashion-MNIST(pytorch)
  5. Six Basic Functional Areas of Spring
  6. 天气预报API接口 : 城市对应码(中国天气网)
  7. [浪风JQuery开发]jquery最有意思的IFrame类似应用--值得深入研究
  8. 死锁的处理策略——检测和解除
  9. 任正非卸任上海华为董事;百度“云手机”今日线上发布;Inkscape 1.0 RC 版发布 | 极客头条...
  10. 【java】编写一个圆柱体类Cylinder,它继承于Circle类
  11. 亿网文交孟建州艺术品该怎么鉴别,代码分析
  12. 驱动精灵安装的流氓软件如何卸载、及删除驱动精灵
  13. OA常见问题和解决方案
  14. php dingo和jwt,Laravel5.5+dingo+JWT 开发后台 API
  15. 识别车牌是什么神经网络,车牌识别深度神经网络
  16. 爱因斯坦:三篇著名演讲
  17. web开发常用js及html代码(待整理)
  18. 由计算机谈最强大脑周玮
  19. 储存过程的优点?缺点?
  20. python项目中的.idea文件夹是干什么的

热门文章

  1. strip().split()怎么用
  2. 9个value_counts()的小技巧,提高Pandas 改进数据分析效率
  3. nginx--基于openssl自颁发SSL证书实现HTTPS协议安全访问网站
  4. 5 分钟图解 磁盘的结构(盘片、磁道、扇区、柱面)
  5. Android Wifi认证(Portal)代码解析DNS并使用Socket发送Http请求完成认证
  6. “电子哨兵”助力防疫 火眼金睛秒识别
  7. python找不到对象怎么办_你为什么总找不到对象
  8. Python3 URL格式化url解析url提取参数
  9. 牛客练习赛63---牛牛的树行棋
  10. 在physx中创建射线ray,并获取碰撞点