我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等方式,重写我们自己的对话框。当然,这也是不失为一个不错的解决方式,但是一般的情况却是这样,我们重写的对话框,也许只在一个特定的地方会用到,为了这一次的使用,而去创建一个新类,往往有点杀鸡用牛刀的感觉,甚至会对我们的程序增加不必要的复杂性,对于这种情形的对话框有没有更优雅的解决方案呢?
幸运的是,android提供了这种问题的解决方案,刚开始接触android的时候,我在做一个自定义对话框的时候,也是通过继承的方式来实现,后来随着对文档了解的深入,发现了android起始已经提供了相应的接口Dialog Builder ,下面我就吧相关的内容在这里分享一下,也能让更多的初学者少走弯路。
首先是一个最简单的应用,就是弹出一个消息框,在android中可以这样实现
- 1
- newAlertDialog.Builder(self)
- 2
- .setTitle("标题")
- 3
- .setMessage("简单消息框")
- 4
- .setPositiveButton("确定",null)
- 5
- .show();
效果如下:
![1.png 1.png](http://www.eoeandroid.com/data/attachment/forum/month_1009/1009051934e4039286d533a1be.png)
上面的代码中我们新建了一个AlertDialog,并用Builder方法形成了一个对象链,通过一系列的设置方法,构造出我们需要的对话框,然后调用show方法显示出来,注意到Builder方法的参数 self,这个其实是Activity对象的引用,根据你所处的上下文来传入相应的引用就可以了。例如在onCreate方法中调用,只需传入this即可。
下面是带确认和取消按钮的对话框
-
- newAlertDialog.Builder(self)
- .setTitle("确认")
- .setMessage("确定吗?")
- .setPositiveButton("是",null)
- .setNegativeButton("否",null)
- .show();
复制代码
![2.png 2.png](http://www.eoeandroid.com/data/attachment/forum/month_1009/10090514154d3cbb9ed67e44a5.png)
注意到,这里有两个null参数,这里要放的其实是这两个按钮点击的监听程序,由于我们这里不需要监听这些动作,所以传入null值简单忽略掉,但是实际开发的时候一般都是需要传入监听器的,用来响应用户的操作。
下面是一个可以输入文本的对话框
-
- newAlertDialog.Builder(self)
- .setTitle("请输入")
- .setIcon(android.R.drawable.ic_dialog_info)
- .setView(newEditText(self))
- .setPositiveButton("确定",null)
- .setNegativeButton("取消",null)
- .show();
![3.png 3.png](http://www.eoeandroid.com/data/attachment/forum/month_1009/10090514150a100809698b72d8.png)
如上代码,我们用setView方法,为我们的对话框传入了一个文本编辑框,当然,你可以传入任何的视图对象,比如图片框,WebView等。。尽情发挥你的想象力吧~:lol
下面是单选框与多选框,也是非常有用的两种对话框
-
- newAlertDialog.Builder(self)
- .setTitle("请选择")
- .setIcon(android.R.drawable.ic_dialog_info)
- .setSingleChoiceItems(newString[]{"选项1","选项2","选项3","选项4"},0,
- newDialogInterface.OnClickListener(){
- publicvoidonClick(DialogInterfacedialog,intwhich){
- dialog.dismiss();
- }
- }
- )
- .setNegativeButton("取消",null)
- .show();
-
![4.png 4.png](http://www.eoeandroid.com/data/attachment/forum/month_1009/1009051415c024e81a4e24440c.png)
-
- newAlertDialog.Builder(self)
- .setTitle("多选框")
- .setMultiChoiceItems(newString[]{"选项1","选项2","选项3","选项4"},null,null)
- .setPositiveButton("确定",null)
- .setNegativeButton("取消",null)
- .show();
![多选对话框 多选对话框](http://www.eoeandroid.com/data/attachment/forum/month_1009/100905142447d638cde26648fd.png)
单选和多选对话框应该是我们平时用的非常多的,代码应该很好理解,下面再最后介绍两个、
列表对话框
-
- newAlertDialog.Builder(self)
- .setTitle("列表框")
- .setItems(newString[]{"列表项1","列表项2","列表项3"},null)
- .setNegativeButton("确定",null)
- .show();
![6.png 6.png](http://www.eoeandroid.com/data/attachment/forum/month_1009/100905142327942810fa5f7305.png)
最后,在对话框中显示图片
-
- ImageViewimg=newImageView(self);
- img.setImageResource(R.drawable.icon);
- newAlertDialog.Builder(self)
- .setTitle("图片框")
- .setView(img)
- .setPositiveButton("确定",null)
- .show();
![7.png 7.png](http://www.eoeandroid.com/data/attachment/forum/month_1009/100905142157508feb45fa4808.png)
我们传入了一个ImageView来显示图片,这里显示了一个经典的android小绿人图标~ ~,当然这里还可以放上网络图片,具体的实现方法就不介绍了,留给大家来练习吧~:lol
最后总结一下,android平台为我们开发提供了极大的便利,DialogBuilder能做的不止这些,这里给大家展示的只是冰山一角,我们可以尽情的发挥想象,创造我们自己的对话框。
转载于:http://blog.csdn.net/chenlei1889/article/details/6267406
分享到:
相关推荐
完整的代码,用以实现安卓界面的对话框弹出问题,能够进行多选,单选,以及登录验证等功能
React Native开发的iOS和Android弹出对话框
1、在开发中有时会用到全局弹出对话框但必须在manifest中申请权限: <uses android:name=android.permission.SYSTEM_ALERT_WINDOW> 2、创建Dialog AlertDialog.Builder builder=new AlertDialog.Builder(this); ...
Android自定义弹出对话框
这个文件总工提供了8种常用Android的对话框示例,可以供大家学习参考。
Android管理信息系统: 包括SQLite 数据库的增删改查,ListView的刷新,弹出对话框提示操作 ListView列表的优化 [注:本内容来自网络,在此分享仅为帮助有需要的网友,如果侵犯了您的权利,麻烦联系我,我会第一时间...
android service中弹出对话框。
该资源为本人编写的Android自定义由底部弹出对话框项目,具体描述可查看本人博客《Android安卓自定义由底部弹出对话框》:(开发中遇到一个日期选择器的需求,就是界面中有两段文本显示日期,点击之后从底部弹出日期...
Android使用Activity用作弹出式对话框
Android开发时,有时候需要在底部弹出对话框,该项目实现了这一功能。 实现时,需要在styles.xml中添加自定义风格属性,对话框进入时和出去时分别加载不同的动画资源文件
Android 底部弹出对话框,点击对话框按钮,实现回调,回传给activity,你点击了哪个按钮,dialog是工具类,可以直接拿过来使用。
仿IOS的Android弹出对话框,可以做工具类使用。
很好的android弹框功能,适用于新手!
基于RecyclerView实现的仿微信聊天界面,item长按根据触摸位置弹出对话框
编写一个程序,按下按钮后间隔3秒自动弹出一个Toast显示当前时间,按返回时有弹出对话框提示是否退出程序,按确认后退出程序 这是android studio文档,eclipse只需要借鉴代码复制粘贴即可
Android 通过NavigationView+DrawerLayout来实现侧滑菜单的功能和点击事件+弹出对话框,有需要的下载来看看
react native开发的demo 弹出对话框,非常适用。适配机型屏幕大小
Android 弹出框,安卓制作 MockDialog弹出对话框的例子,弹出层后手机屏幕变暗的例子,这种效果在电脑端的WEB开发时候见到比较多了,很多都是用于弹出提示、更新提示等地方,这个例子是入门级的,因此对新手是比较...
在Android 实现自定义多个按钮的Dialog弹出对话框,演示了拥有两个Button的Dialog对话框(确认和取消)、拥有三个按钮的对话框(确认取消和其它信息链接)、可进行输入的对话框以及进度框(显示正在处理的圆环...
能够在一个对话框中弹出时间和日期,合并了DatePicker和TimePicker,解决android自带控件只能弹出时间货日期的问题。 使用方法: EditText et= (EditText) findViewById(R.id.qx_type); et.setOnClickListener(new ...