我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等方式,重写我们自己的对话框。当然,这也是不失为一个不错的解决方式,但是一般的情况却是这样,我们重写的对话框,也许只在一个特定的地方会用到,为了这一次的使用,而去创建一个新类,往往有点杀鸡用牛刀的感觉,甚至会对我们的程序增加不必要的复杂性,对于这种情形的对话框有没有更优雅的解决方案呢?
幸运的是,android提供了这种问题的解决方案,刚开始接触android的时候,我在做一个自定义对话框的时候,也是通过继承的方式来实现,后来随着对文档了解的深入,发现了android起始已经提供了相应的接口Dialog Builder ,下面我就吧相关的内容在这里分享一下,也能让更多的初学者少走弯路。
首先是一个最简单的应用,就是弹出一个消息框,在android中可以这样实现
- 1
- new AlertDialog.Builder(self)
- 2
- .setTitle("标题" )
- 3
- .setMessage("简单消息框" )
- 4
- .setPositiveButton("确定" , null )
- 5
-
.show();
效果如下:
上面的代码中我们新建了一个AlertDialog,并用Builder方法形成了一个对象链,通过一系列的设置方法,构造出我们需要的对话框,然后调用 show方法显示出来,注意到Builder方法的参数 self,这个其实是Activity对象的引用,根据你所处的上下文来传入相应的引用就可以了。例如在onCreate方法中调用,只需传入this即可。
下面是带确认和取消按钮的对话框
-
- new AlertDialog.Builder(self)
- .setTitle("确认" )
- .setMessage("确定吗?" )
- .setPositiveButton("是" ,
null )
- .setNegativeButton("否" ,null)
-
.show();
复制代码
注意到,这里有两个null参数,这里要放的其实是这两个按钮点击的监听程序,由于我们这里不需要监听这些动作,所以传入null值简单忽略掉,但是实际开发的时候一般都是需要传入监听器的,用来响应用户的操作。
下面是一个可以输入文本的对话框
-
- new AlertDialog.Builder(self)
- .setTitle("请输入" )
-
.setIcon(android.R.drawable.ic_dialog_info)
- .setView(new EditText(self))
- .setPositiveButton("确定" ,null)
- .setNegativeButton("取消" ,
null )
-
.show();
如上代码,我们用setView方法,为我们的对话框传入了一个文本编辑框,当然,你可以传入任何的视图对象,比如图片框,WebView等。。尽情发挥你的想象力吧~:lol
下面是单选框与多选框,也是非常有用的两种对话框
-
- new AlertDialog.Builder(self)
- .setTitle("请选择" )
- .setIcon(android.R.drawable.ic_dialog_info)
- .setSingleChoiceItems(new String[]{"选项1",
"选项2", "选项3"
, "选项4" },
0 ,
- new DialogInterface.OnClickListener(){
-
- public
void onClick(DialogInterfacedialog,
int which){
-
dialog.dismiss();
-
}
-
}
-
)
- .setNegativeButton("取消" ,
null )
-
.show();
-
-
- new AlertDialog.Builder(self)
- .setTitle("多选框" )
-
.setMultiChoiceItems(new String[]{"选项1",
"选项2", "选项3"
, "选项4" },
null , null )
- .setPositiveButton("确定" ,null)
- .setNegativeButton("取消" ,
null )
-
.show();
单选和多选对话框应该是我们平时用的非常多的,代码应该很好理解,下面再最后介绍两个、
列表对话框
-
- new AlertDialog.Builder(self)
- .setTitle("列表框" )
- .setItems(new String[]{"列表项1",
"列表项2", "列表项3"
}, null )
- .setNegativeButton("确定" ,
null )
-
.show();
最后,在对话框中显示图片
-
- ImageViewimg= newImageView(self);
-
img.setImageResource(R.drawable.icon);
- new AlertDialog.Builder(self)
- .setTitle("图片框" )
-
.setView(img)
- .setPositiveButton("确定" ,
null )
-
.show();
我们传入了一个ImageView来显示图片,这里显示了一个经典的android小绿人图标~ ~,当然这里还可以放上网络图片,具体的实现方法就不介绍了,留给大家来练习吧~:lol
最后总结一下,android平台为我们开发提供了极大的便利,DialogBuilder能做的不止这些,这里给大家展示的只是冰山一角,我们可以尽情的发挥想象,创造我们自己的对话框。
分享到:
相关推荐
对9中常用的Android对话框进行了封装,可以直接添加到代码中修改使用。
android AlertDialog对话框的类型集合 ,比较全面的讲述了 AlertDialog 的 种类 , Demo 的综合性比较强 , Demo 可直接运行
Android Dialog对话框用法演示实例,通过学习研究本源码来熟悉Dialog组件的使用,用户可以点击了对话框上的确定按钮,点击对话框...比如一些常用的场景就是:用户登录提示、网络正在下载提示、下载成功与失败的提示等。
Android手机版本更新,使用okhttp网络框架进行网络请求和文件下载操作,使用Handler线程处理progress进度的实时更新,下载之后用户进行选择安装新版本,点击手机返回键或者对话框取消按钮取消文件下载,代码简单易懂...
当用户运行某一应用程序而等待时,显示一个简单的进度对话框~
日常生活中我们随处可见对话框,上面有很多提示信息,更加方便提示用户进行不同的操作。 一、对话框的两个特点和一些常见的对话框 1.当弹出对话框是会结束UI线程(即主线程); 2.当前的Activity会失去焦点; 3.消息...
项目中为了实现账号多设备登录的监听 一个账号在别的设备登录时在该设备上需要弹出对话框提示 故而用到全局对话框 方案一、 1、在开发中有时会用到全局弹出对话框但必须在manifest中申请权限: <uses android:name...
Android自定义对话框Dialog(界面美化).zip
android全局对话框,在某些条件环境下,需要在任何界面显示一个对话框,来提示最新信息,就需要全局对话框。
android:实现点击按钮,弹出“请稍候...(文本可以自定义)”对话框,加载完了之后,对话框自动消失,提供了两种定时消失的方案,可自行选择。
android开发中关于消息提示和对话框的源代码
主要包括三个方面:1.普通提示弹框;2.退出弹框;3.弹框选择内容;详细内容见博客 http://blog.csdn.net/pfe_nova/article/details/38391111
android自定义透明对话框,透明提示框,自定义Dialog
该项目代码包含了各种对话框的使用案例,及效果示意图!
主要为大家详细介绍了Android时间对话框的使用方法,包括analogclock和digitalclock显示时钟的控件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Android制作显示进度的对话框【源代码】,在显示的对话框中显示一个Loading特效,或者是一个Loading动画或文字等,避免用户误以为系统无反应而关掉,现在Loading在各个对话框中的应用已经是最基本的了。若你是...
android中的对话框只要是在当前页面弹出一个窗口,用于提示用户重要的信息,并获得焦点;而用户可以与之互动,也可以接 受收用户输入的信息,同时也可以反馈信息给用户。dialog一般是分为图标区,标题区,内容区和...
EasyDialog, 在Android中,一个轻量级的灵活提示对话框 EasyDialog:Android中一个轻量级,灵活的提示对话框演示可以在GooglePlay中下载 在 Android.You 中一个轻量级。灵活的提示对话框可以定制对话框样式easily,...
android自定义可扩展漂亮的dialog对话框,支持android 2.2以上的版本,可用作条件筛选、消息提示、浮出窗口的应用操作。
主要介绍了详解Android中提示对话框(ProgressDialog和DatePickerDialog和TimePickerDialog&PopupWindow)的相关资料,需要的朋友可以参考下