我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等方式,重写我们自己的对话框。当然,这也是不失为一个不错的解决方式,但是一般的情况却是这样,我们重写的对话框,也许只在一个特定的地方会用到,为了这一次的使用,而去创建一个新类,往往有点杀鸡用牛刀的感觉,甚至会对我们的程序增加不必要的复杂性,对于这种情形的对话框有没有更优雅的解决方案呢? 

    幸运的是,android提供了这种问题的解决方案,刚开始接触android的时候,我在做一个自定义对话框的时候,也是通过继承的方式来实现,后来随着对文档了解的深入,发现了android起始已经提供了相应的接口Dialog Builder ,下面我就吧相关的内容在这里分享一下,也能让更多的初学者少走弯路。



首先是一个最简单的应用,就是弹出一个消息框,在android中可以这样实现

[java] view
plain
copy



[java] view
plain
copy

  1. 1
  2. new AlertDialog.Builder(self)
  3. 2
  4. .setTitle("标题")
  5. 3
  6. .setMessage("简单消息框")
  7. 4
  8. .setPositiveButton("确定", null)
  9. 5
  10. .show();

效果如下:



 





上面的代码中我们新建了一个AlertDialog,并用Builder方法形成了一个对象链,通过一系列的设置方法,构造出我们需要的对话框,然后调用show方法显示出来,注意到Builder方法的参数 self,这个其实是Activity对象的引用,根据你所处的上下文来传入相应的引用就可以了。例如在onCreate方法中调用,只需传入this即可。





下面是带确认和取消按钮的对话框

  1. [java] view
    plain
    copy

    1. new AlertDialog.Builder(self)
    2. .setTitle("确认")
    3. .setMessage("确定吗?")
    4. .setPositiveButton("是", null)
    5. .setNegativeButton("否", null)
    6. .show();

复制代码

 



注意到,这里有两个null参数,这里要放的其实是这两个按钮点击的监听程序,由于我们这里不需要监听这些动作,所以传入null值简单忽略掉,但是实际开发的时候一般都是需要传入监听器的,用来响应用户的操作。



下面是一个可以输入文本的对话框

  1. [java] view
    plain
    copy

    1. new AlertDialog.Builder(self)
    2. .setTitle("请输入")
    3. .setIcon(android.R.drawable.ic_dialog_info)
    4. .setView(new EditText(self))
    5. .setPositiveButton("确定", null)
    6. .setNegativeButton("取消", null)
    7. .show();



 



如上代码,我们用setView方法,为我们的对话框传入了一个文本编辑框,当然,你可以传入任何的视图对象,比如图片框,WebView等。。尽情发挥你的想象力吧~:lol



下面是单选框与多选框,也是非常有用的两种对话框

  1. [java] view
    plain
    copy

    1. new AlertDialog.Builder(self)
    2. .setTitle("请选择")
    3. .setIcon(android.R.drawable.ic_dialog_info)
    4. .setSingleChoiceItems(new String[] {"选项1","选项2","选项3","选项4"}, 0,
    5. new DialogInterface.OnClickListener() {
    6. public void onClick(DialogInterface dialog, int which) {
    7. dialog.dismiss();
    8. }
    9. }
    10. )
    11. .setNegativeButton("取消", null)
    12. .show();



  1. [java] view
    plain
    copy

    1. new AlertDialog.Builder(self)
    2. .setTitle("多选框")
    3. .setMultiChoiceItems(new String[] {"选项1","选项2","选项3","选项4"}, null, null)
    4. .setPositiveButton("确定", null)
    5. .setNegativeButton("取消", null)
    6. .show();



 



单选和多选对话框应该是我们平时用的非常多的,代码应该很好理解,下面再最后介绍两个、



列表对话框

  1. [java] view
    plain
    copy

    1. new AlertDialog.Builder(self)
    2. .setTitle("列表框")
    3. .setItems(new String[] {"列表项1","列表项2","列表项3"}, null)
    4. .setNegativeButton("确定", null)
    5. .show();



 





最后,在对话框中显示图片

  1. [java] view
    plain
    copy

    1. ImageView img = new ImageView(self);
    2. img.setImageResource(R.drawable.icon);
    3. new AlertDialog.Builder(self)
    4. .setTitle("图片框")
    5. .setView(img)
    6. .setPositiveButton("确定", null)
    7. .show();



 



      我们传入了一个ImageView来显示图片,这里显示了一个经典的android小绿人图标~ ~,当然这里还可以放上网络图片,具体的实现方法就不介绍了,留给大家来练习吧~:lol



      最后总结一下,android平台为我们开发提供了极大的便利,DialogBuilder能做的不止这些,这里给大家展示的只是冰山一角,我们可以尽情的发挥想象,创造我们自己的对话框。

常用的android弹出对话框 几乎包含了所有(1)的更多相关文章

  1. 常用的android弹出对话框

    我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等 ...

  2. 经常使用的android弹出对话框

    我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其它平台开发经验的朋友都会知道,大部分的平台都仅仅提供了几个最简单的实现,假设我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承 ...

  3. android弹出对话框

    我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等 ...

  4. android 弹出对话框之四周变暗处理方式

    设置对话框的dim值即可 WindowManager.LayoutParams lp=popDlg.getWindow().getAttributes(); lp.dimAmount = 0.0f; ...

  5. Android 弹出对话框Dialog充满屏幕宽度

    final View view = LayoutInflater.from(context).inflate(layoutId, null); final Dialog dialog = new Di ...

  6. Android 使用弹出对话框,报Unable to add window错误

    今天在使用Android弹出对话框的时候,报了一个unable to add window错误,我的代码如下 new AlertDialog.Builder(getApplicationContext ...

  7. Android 手机卫士--弹出对话框

    在<Android 手机卫士--解析json与消息机制发送不同类型消息>一文中,消息机制发送不同类型的信息还没有完全实现,在出现异常的时候,应该弹出吐司提示异常,代码如下: private ...

  8. QT常用代码之加载动态库和弹出对话框

    作者:朱金灿 来源:http://blog.csdn.net/clever101 加载动态库的代码: typedef void (*Execute)(); // 定义导出函数类型 QString st ...

  9. Android弹出选项框及指示箭头动画选择

     Android弹出选项框及指示箭头动画选择 Android原生的Spinner提供了下拉列表选项框,但在一些流行的APP中,原生的Spinner似乎不太受待见,而通常会有下图所示的下拉列表选项框 ...

随机推荐

  1. 小波变换检测信号突变点的MATLAB实现

    之前在不经意间也有接触过求突变点的问题.在我看来,与其说是求突变点,不如说是我们常常玩的"找不同".给你两幅图像,让你找出两个图像中不同的地方,我认为这其实也是找突变点在生活中的应 ...

  2. 郭超:阿里云Cassandra背后的故事

    大家好,我是阿里云数据库产品事业部的玄陵,真名郭超. ​ 本次的分享大概分三个部分:Cassandra云数据库简介.Cassandra云数据库特性以及Q&A. ​ 我们先了解一下Cassand ...

  3. JavaScript动画实例:炸开的小球

    1.炸开的小球 定义一个小球对象类Ball,它有6个属性:圆心坐标(x,y).小球半径radius.填充颜色color.圆心坐标水平方向的变化量speedX.圆心坐标垂直方向的变化量speedY. B ...

  4. 【av68676164(p23-p24)】临界区和锁

    4.4.1 临界资源和临界区 临界资源(Critical Resource) 一次只允许一个进程独占访问(使用)的资源 例:例子中的共享变量i 临界区(Critical Section) 进程中访问临 ...

  5. 7、Prototype 原型模式 通过复制创造实例 创造型模式

    2020-07-19 发哥讲 发哥讲 其实上一节的末尾讲到如何去生成对象,其中有一个关于clone的,这其实就是Prototype原型模式. 通过克隆(拷贝)的方式生成对象 1.了解Prototype ...

  6. BLE GAP 协议和 GATT 协议

    BLE GAP 协议和 GATT 协议 最近要打算学习 Blufi 协议进行蓝牙配置,其中必然使用 GAP 协议和 GATT 协议,于是进行重新学习一番. BLE 是一个 Bluetooth SIG ...

  7. vue跳转页面问题记录

    跳转到别的页面带参数 const space = this.pageHelperspace['search'] = this.searchconst query_params = Object.ass ...

  8. Mybatis 和 Solon 勾搭在一起,也是个漂亮组合

    故事相关的源码 https://gitee.com/noear/solon_demo/tree/master/demo08.solon_mybatis 故事开讲 Solon 是Java世界里一个新的极 ...

  9. 装机备忘录:VS Code 常用插件

    VS Code 常用插件推荐 1.基本的代码补全 2.git 扩展工具,可以看到代码的每一行 是谁修改?什么时候修改? 修改的版本号? 修改的注释? 非常好的一个工具 3.括号颜色改变工具,可以改变括 ...

  10. GUAVA-ListenableFuture实现回调

    随着软件开发的不断进步,在实际的开发应用中,可能一次请求需要查询若干次数据库或者调用若干次第三方,按照传统的串行执行的话,会大大增加响应时间,无法满足业务需求,更无法满足用户迫切需要响应迅速的愿望.对 ...