博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
系统组件:警告对话框AlertDialog(1)
阅读量:6158 次
发布时间:2019-06-21

本文共 4485 字,大约阅读时间需要 14 分钟。

 虽然AlertDialog类属于android.app.Dialog包下,不属于android.widget包下,但在Android中常被用于显示信息的一种组件,这里仍然将其看为和TextView、EditText等类似的UI组件。

查阅Android文档可知AlertDialog类的定义:

  由上图可知AlertDialog类继承了Dialog,以及实现了DialogInterface接口。Dialog是很多对话框(如ProgressDialog,DatePickerDialog,TimePickerDialog)共同的父类,而DialogInterface则声明了在对话框上的一些监听事件,用于监听用户在对话框上的操作。

  Dialog类的定义:

  DialogInterface类的定义:

 

  创建AlertDialog一般是使用AlertDialog的内部类AlertDialog.Builder来创建,其中AlertDialog.Builder有很多重要的方法,用来设置AlertDialog的一些属性。

AlertDialog.Builder的常用方法:

  1.( icon);设置对话框顶部显示的图标

      2.(int iconId);设置对话框顶部显示的图标

      3.(int messageId);设置对话框中间的内容显示

      4.( items, int checkedItem, listener);设置对话框单选数据项

      5.( items, boolean[] checkedItems, listener);设置对话框复选数据项

      6.( view);向对话框添加一个UI组件或者UI容器

      7.( adapter, listener);设置对话框的适配器

      8.(boolean cancelable);设置当出现对话框时,是否能够点击对话框之外的区域,取消对话框

      9.( text, listener);为对话框添加确认按钮,默认没有添加

      10.( text, listener);为对话框添加取消按钮,默认没有添加

      11.( text, listener);为对话框添加一般按钮

      12.();返回值是一个AlertDialog的实例

AlertDialog的常用方法:

    1.show();用来将对话框显示在界面

    2.dismiss();取消对话框的显示

总结:AlertDialog的显示可分为三个区域,一是顶部的图标和标题,二是中间的正文内容,三是底部的确认按钮、取消按钮、普通按钮。

注意:

  1.正文内容只能通过以下一种方法设置,若使用多种,只会出现先调用的方法(未充分测试==!),原因是它们设置的内容都是对同一块区域操作。

    、、、、

  2.在Android2.3.1平台下,三按钮的位置是相对固定的,分别置于最左侧,最右侧和居中,但在Android4.0平台下,setPositiveButton和setNegativeButton位置恰恰相反,分别置于最右侧和最左侧。(参考:)

实例:界面有6个按钮,当点击不同按钮时,显示不同的对话框,初始界面如下图

1.点击按钮时出现普通对话框

 源码如下:

1 // 普通对话框2     public void showDialog1(View v) {3         AlertDialog.Builder builder = new AlertDialog.Builder(this);4         dialog1 = builder.setIcon(R.drawable.ic_launcher).setTitle("普通对话框")5                 .setMessage("普通对话框的内容").setPositiveButton("确定", null)6                 .setNegativeButton("取消", null).create();7         dialog1.show();8     }

 

2.点击按钮时出现单选对话框

源码如下:

1 // 单选对话框 2     public void showDialog2(View v) { 3         AlertDialog.Builder builder = new AlertDialog.Builder(this); 4         dialog2 = builder 5                 .setIcon(R.drawable.ic_launcher) 6                 .setTitle("单选对话框") 7                 .setSingleChoiceItems(new String[] { "选择1", "选择2", "选择3" }, 0, 8                         null).setNegativeButton("取消", null) 9                 .setPositiveButton("确定", null).create();10 11         dialog2.show();12     }

 

3.点击按钮时出现多选多话框

 源码如下:

1 // 多选对话框 2     public void showDialog3(View v) { 3         AlertDialog.Builder builder = new AlertDialog.Builder(this); 4         dialog3 = builder 5                 .setIcon(R.drawable.ic_launcher) 6                 .setTitle("多选对话框") 7                 .setMultiChoiceItems( 8                         new String[] { "多选一", "多选二", "多选三", "多选四", "多选五" }, 9                         new boolean[] { true, false, true, false, false }, null)10                 .setNegativeButton("取消", null).setPositiveButton("确定", null)11                 .create();12 13         dialog3.show();14     }

 

4.点击按钮时出现简单的View对话框

源码如下:

1 // 简单的View对话框 2     public void showDialog4(View v) { 3         AlertDialog.Builder builder = new AlertDialog.Builder(this); 4         dialog4 = builder.setIcon(R.drawable.ic_launcher) 5                 .setTitle("简单的View对话框").setView(new EditText(this)) 6                 .setPositiveButton("确定", null).setNegativeButton("取消", null) 7                 .create(); 8  9         dialog4.show();10     }

 

5.点击按钮时出现自定义布局对话框

源码如下:

1 // 自定义布局对话框 2     public void showDialog5(View v) { 3         AlertDialog.Builder builder = new AlertDialog.Builder(this); 4         View view = getLayoutInflater().inflate(R.layout.dialog_layout, null); 5         dialog5 = builder.setIcon(R.drawable.ic_launcher).setTitle("自定义布局对话框") 6                 .setView(view).setPositiveButton("确定", null) 7                 .setNegativeButton("取消", null).create(); 8  9         dialog5.show();10     }

简单看下5和6的代码:可以看到都是使用了同一个方法:setView(View view),这个方法的参数View既可以时一个UI控件,也可以是一个容器布局,然后再容器布局中可以添加许多组件。

 

6.点击按钮时出现适配器对话框

源码如下:

1 // 适配器对话框 2     public void showDialog6(View v) { 3         AlertDialog.Builder builder = new AlertDialog.Builder(this); 4         ArrayAdapter
adapter = new ArrayAdapter
(this, 5 android.R.layout.simple_expandable_list_item_1, new String[] { 6 "第一条数据", "第二条数据", "第三条数据" }); 7 8 dialog6 = builder.setIcon(R.drawable.ic_launcher) 9 .setAdapter(adapter, null).setPositiveButton("确定", null)10 .setNegativeButton("取消", null).create();11 dialog6.show();12 }

对话框中使用适配器,可以加载大量的数据,可以说是发挥很大的作用。

未完,待续。

转载于:https://www.cnblogs.com/enjoy-coding/p/4795968.html

你可能感兴趣的文章
HP DL380G4服务器前面板指示灯的含义
查看>>
数据结构_树结构
查看>>
常用URL地址
查看>>
每天一个linux命令(19):find 命令概览
查看>>
MySQL kill操作
查看>>
windows下看端口占用
查看>>
Decommissioning a Domain Controller 降域控
查看>>
Character中的奇葩
查看>>
c++书籍推荐
查看>>
互联网通用架构技术----缓存雪崩
查看>>
Dell R710服务器磁盘恢复数据库一例(记录)
查看>>
我的友情链接
查看>>
Ionic3 通讯录索引的实现
查看>>
轻松监听Azure service health 状态
查看>>
Matlab 进行FFT
查看>>
Eclipse 工作台用户指导>视图和编辑器
查看>>
项目常用的PHP代码
查看>>
Python自动化开发学习22-Django下(Form)
查看>>
算法-排序
查看>>
获取SQL SERVER某个数据库中所有存储过程的参数
查看>>