AlertDialog的功能是非常强大的,它可以创建各种对话框,它的结构分为:图标区、标题区、内容区、按钮区共四个区域。以这样的思路区创建AlertDialog是非常简单的。

创建AlertDialog的七大步骤:

  1. 创建AlertDialog.Builder对象
  2. 调用AlertDialog.Builder对象的setTitle()或setCustomTitle()方法设置标题
  3. 调用AlertDialog.Builder的setIcon方法设置图标
  4. 调用AlertDialog.Builder相关方法如setMessage方法、setItems方法、setSingleChoiceItems方法、setMultiChoiceItems方法、setAdapter方法、setView方法设置不同类型的对话框内容。
  5. 调用setPositiveButton、setNegativeButton、setNeutralButton或者setNeutralButton()方法设置多个按钮
  6. 调用Builder对象的create()方法创建AlertDialog对象
  7. 调用AlertDialog.Builder对象的create()方法创建AlertDialog对象,然后调用show()方法将对话框显示出来

对步骤4中的六种方法进行简单解析:

  • setMessage方法设置对话内容为简单文本
  • setItems方法设置对话框内容为简单列表项
  • setSingleChoiceItems方法设置对话框内容为单选列表项
  • setMultiChoiceItems方法设置对话框内容为多选列表项
  • setAdapter方法设置对话框内容为自定义列表项
  • setView方法设置对话框内容为自定义View

下面对六种方法进行一一实例演示

先创建一个布局文件,如下

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:gravity="center_horizontal"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent">
  7. <!-- 显示一个普通的文本编辑框组件 -->
  8. <EditText
  9. android:id="@+id/show"
  10. android:layout_width="match_parent"
  11. android:layout_height="wrap_content"
  12. android:editable="false"/>
  13. <!-- 定义一个普通的按钮组件 -->
  14. <Button
  15. android:layout_width="match_parent"
  16. android:layout_height="wrap_content"
  17. android:onClick="simple"
  18. android:text="简单对话框"/>
  19. <!-- 定义一个普通的按钮组件 -->
  20. <Button
  21. android:layout_width="match_parent"
  22. android:layout_height="wrap_content"
  23. android:onClick="simpleList"
  24. android:text="简单列表项对话框" />
  25. <!-- 定义一个普通的按钮组件 -->
  26. <Button
  27. android:layout_width="match_parent"
  28. android:layout_height="wrap_content"
  29. android:onClick="singleChoice"
  30. android:text="单选列表项对话框" />
  31. <!-- 定义一个普通的按钮组件 -->
  32. <Button
  33. android:layout_width="match_parent"
  34. android:layout_height="wrap_content"
  35. android:onClick="multiChoice"
  36. android:text="多选列表项对话框" />
  37. <!-- 定义一个普通的按钮组件 -->
  38. <Button
  39. android:layout_width="match_parent"
  40. android:layout_height="wrap_content"
  41. android:onClick="customList"
  42. android:text="自定义列表项对话框" />
  43. <!-- 定义一个普通的按钮组件 -->
  44. <Button
  45. android:layout_width="match_parent"
  46. android:layout_height="wrap_content"
  47. android:onClick="customView"
  48. android:text="自定义View对话框" />
  49. </LinearLayout>

1.setMessage方法

  1. public void simple(View source) {
  2. AlertDialog.Builder builder = new AlertDialog.Builder(this)
  3. //设置对话框标题
  4. .setTitle("简单对话框")
  5. //设置图标
  6. .setIcon(R.drawable.tools)
              .setMessage("我没有掉头发");
  7. // 为AlertDialog.Builder添加按钮
  8. setPositiveButton(builder);
  9. // 为AlertDialog.Builder添加按钮
  10. setNegativeButton(builder).create().show();

2.setItems方法

  1. //简单列表项对话框
  2. private String[] items = new String[]{"说好不哭", "等你下课",
  3. "七里香", "可爱女人"};
  4. public void simpleList(View source) {
  5. AlertDialog.Builder builder = new AlertDialog.Builder(this)
  6. //设置对话框标题
  7. .setTitle("简单列表项对话框")
  8. //设置图标
  9. .setIcon(R.drawable.tools)
  10. //设置简单的列表项内容
  11. .setItems(items, (dialog, wh) ->
  12. show.setText("你选中了《" + items[wh] + "》"));
  13. // 为AlertDialog.Builder添加“确定”按钮
  14. setPositiveButton(builder);
  15. // 为AlertDialog.Builder添加“取消”按钮
  16. setNegativeButton(builder).create().show();
  17. }

3.setSingleChoiceItems方法

  1. //单选列表项对话框
  2. public void singleChoice(View source) {
  3. AlertDialog.Builder builder = new AlertDialog.Builder(this)
  4. //设置对话框标题
  5. .setTitle("单选列表项对话框")
  6. //设置标题
  7. .setIcon(R.drawable.tools)
  8. //设置单选列表项,默认选中第二项(索引为1)
  9. .setSingleChoiceItems(items, 1, (dialog, which) ->
  10. show.setText("你选中了《" + items[which] + "》"));
  11. // 为AlertDialog.Builder添加“确定”按钮
  12. setPositiveButton(builder);
  13. // 为AlertDialog.Builder添加“取消”按钮
  14. setNegativeButton(builder).create().show();
  15. }

 4.setMultiChoiceItems方法

  1. public void multiChoice(View source) {
  2. AlertDialog.Builder builder = new AlertDialog.Builder(this)
  3. //设置对话框标题
  4. .setTitle("多选列表项对话框")
  5. //设置标题
  6. .setIcon(R.drawable.tools)
  7. //设置多选列表项,设置勾选第二项、第四项
  8. .setMultiChoiceItems(items, new boolean[]{false, true, false, true}, null);
  9. // 为AlertDialog.Builder添加“确定”按钮
  10. setPositiveButton(builder);
  11. // 为AlertDialog.Builder添加“取消”按钮
  12. setNegativeButton(builder).create().show();
  13. }

 5.setAdapter方法

  1. public void customList(View source) {
  2. AlertDialog.Builder builder = new AlertDialog.Builder(this)
  3. //设置对话框标题
  4. .setTitle("自定义列表项对话框")
  5. //设置图标
  6. .setIcon(R.drawable.tools)
  7. //设置自定义列表项
  8. .setAdapter(new ArrayAdapter(this, R.layout.array_item, items), null);
  9. // 为AlertDialog.Builder添加“确定”按钮
  10. setPositiveButton(builder);
  11. // 为AlertDialog.Builder添加“取消”按钮
  12. setNegativeButton(builder).create().show();
  13. }

6.setView方法

  1. public void customView(View source) {
  2. //login.xml界面布局文件
  3. TableLayout loginForm = (TableLayout) getLayoutInflater().inflate(R.layout.login, null);
  4. new AlertDialog.Builder(this)
  5. // 设置对话框的图标
  6. .setIcon(R.drawable.tools)
  7. // 设置对话框的标题
  8. .setTitle("自定义View对话框")
  9. // 设置对话框显示的View对象
  10. .setView(loginForm)
  11. // 为对话框设置一个“确定”按钮
  12. .setPositiveButton("登录", (dialog, which) -> {
  13. // 此处可执行登录处理
  14. })
  15. // 为对话框设置一个“取消”按钮
  16. .setNegativeButton("取消", (dialog, which) -> {
  17. // 取消登录,不做任何事情
  18. })
  19. // 创建并显示对话框
  20. .create().show();
  21. }

AlertDialog创建对话框的测试的更多相关文章

  1. 使用AlertDialog创建对话框的大致步骤

    1.创建AlertDialog.Builder对象,该对象是AlertDialog的创建器.2.调用AlertDialog.Builder的方法为对话框设置图标.标题.内容等.3.调用AlertDia ...

  2. Android开发之使用AlertDialog创建对话框,单选框和多选框

    对话框: 对话框的icon,title,message等都可以不设置. 单选框和多选框与对话框勾选步骤基本上一致. 对话框的构建步骤: 1.使用AlertDialog类的内部类Builder类new ...

  3. Android 官方推荐 : DialogFragment 创建对话框

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37815413 1. 概述 DialogFragment在android 3.0时 ...

  4. [Android Pro] Android 官方推荐 : DialogFragment 创建对话框

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37815413 1. 概述 DialogFragment在android 3.0时 ...

  5. AlertDialog.Builder对话框类的用法

    1.在测试时,如何实现一个提示 可以使用 Toast.makeText(this, "这是一个提示", Toast.LENGTH_SHORT).show(); //从资源文件str ...

  6. 转帖:Android 官方推荐 : DialogFragment 创建对话框

    转: Android 官方推荐 : DialogFragment 创建对话框 复制内容,留作备份 1. 概述 DialogFragment在android 3.0时被引入.是一种特殊的Fragment ...

  7. AlertDialog设计对话框

    MainActivity.java        public class MainActivity extends Activity {       TextView show;       Str ...

  8. 【Qt】2.3 使用Qt设计师来创建对话框

    安装完Qt OpenSource之后,在开始菜单目录下会有这几个东西. 其中[Designer]是用来设计窗口界面的程序.所以现在可以使用它来设计一个对话框.在[Qt Creator]中,[设计]这一 ...

  9. alertDialog创建登陆界面,判断用户输入

    alertDialog创建登陆界面,需要获取用户输入的用户名和密码,获取控件对象的时候不能像主布局文件那样获得, 需要在onClickListener中获取,代码如下: public boolean ...

随机推荐

  1. [TimLinux] Python 装饰器

    1. 装饰器 一种语法格式,用于替换另外一个编码风格,一种语法糖,通过语法结构明确标识出这样一种语法. 自动在被装饰对象尾部执行代码(不使用装饰器语法时,需要明确写明的代码) 被装饰对象可以为函数.类 ...

  2. Selenium 4.0 Alpha更新日志

    早在2018年8月,整个测试自动化社区就发生了一件重大新闻:Selenium的创始成员Simon Stewart在班加罗尔Selenium会议上正式确认了Selenium 4的发布日期和一些重要更新. ...

  3. Asp.net Core dotnet 发布类库文件 带上注释,发布预发行版,带上所有引用

    带上注释 效果图 带上所有引用 效果图 预发行版 效果图 由于微软取消了  project.json  这个json 转而用了csproj 用于保存配置 所以懵逼很大一会 资料来源 project.j ...

  4. Jquery判断当前时PC端,移动端,平板端屏幕

    $(function(){     // console.log(navigator.userAgent);     var os = function (){       var ua = navi ...

  5. python为前端提供API

    作为一名前端来学习后端语言,有难度啊.这里把第一次尝试的过程做个记录 1.网上看到Python给前端提供API可以使用python的flaskweb框架 #py文件 import json from ...

  6. C语言中表达n次方

    C语言中表达n次方可以用pow函数. 函数原型:double pow(double x, double y) 功    能:计算x^y的值 返 回 值:计算结果 举例: double a; a = p ...

  7. 关于eclipse码代码时光标自动消失要重新点击输入框的问题

    前几天码代码时在两个电脑都出现了同样的问题,就是在输入的时候,输入法突然从程序框切换到某不可名状的位置,要重新点击输入框才能解决.(后发现不但是eclipse,任何带有输入框的都会出现此问题) 经排查 ...

  8. hdu 1010 Tempter of the Bone(深搜+奇偶剪枝)

    Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  9. Real World CTF一日游

    今天去感受了长亭举办的RWCTF现场,参加了技术论坛,也学到了很多的知识 比较有印象的就是 智能安全在Web防护中的探索和实践 阿里云安全防护构建的AI架构体系: 基线检测 基础过滤 异常检测 攻击识 ...

  10. js问题记录(一) -- 关于for in, sort(), 及prototype

    1.关于for in for in : 遍历对象中的可枚举的属性 例子1:for in 遍历对象的键为String类型,所以调用时用Object[key]形式,而不用Object.key形式 < ...