分类:C#、Android、VS2015;

创建日期:2016-02-08

一、简介

AlertDialog也是Android系统当中常用的对话框之一。

在一个AlertDialog中,可以有一个Button、两个Button、3个Button。另外,还可以自定义对话框的样式,比如带有单选按钮的对话框、带有复选框的对话框等。

1、基本用法

一般通过AlertDialog.Builder.Create()方法来构造该对话框,然后就可以通过dialog调用对应的方法。常用方法如下:

  • SetTitle:设置对话框标题
  • SetIcon:设置对话框图标
  • SetMessage:设置对话框内容
  • StView: 设置自定义的对话框样式
  • SetItems:设置对话框要显示的列表
  • SetSingleChoiceItems:在对话框中显示一系列的单选按钮
  • SetMultiChoiceItems:在对话框中显示一系列的复选框
  • SetNegativeButton:对对话框添加在左侧显示的按钮
  • SetNeutralButton:为对话框添加在中间显示的按钮
  • SetPositiveButton:为对话框添加在右侧显示的按钮
  • Create :创建对话框
  • Show :显示对话框

2、自定义警告框

尽管系统默认的Dialog已经能够基本上满足大多数情况,但由于系统默认对话框样式是固定的,而在实际开发过程中,往往根据应用不同,可能会使用不同的布局或者配色,这些情况下就需要自定义对话框了。

自定义一个对话框的基本步骤如下:

(1)修改系统默认的Dialog样式(风格、主题)

(2)自定义Dialog布局文件。

(3)封装一个继承自Dialog的子类或者直接用Dialog类来实现。为了方便重用,建议自己封装一个单独的继承自Dialog的子类。

二、示例—Demo02AlertDialog

1、运行截图

2、添加Demo02_AlertDialog.axml

在layout文件夹下添加该文件。

  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:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. android:gravity="center">
  7. <Button
  8. android:id="@+id/demo1"
  9. android:layout_width="fill_parent"
  10. android:layout_height="wrap_content"
  11. android:text="用法1-简单对话框(一个按钮)" />
  12. <Button
  13. android:id="@+id/demo2"
  14. android:layout_width="fill_parent"
  15. android:layout_height="wrap_content"
  16. android:text="用法2-简单对话框(两个按钮)" />
  17. <Button
  18. android:id="@+id/demo3"
  19. android:layout_width="fill_parent"
  20. android:layout_height="wrap_content"
  21. android:text="用法3-简单对话框(三个按钮)" />
  22. <Button
  23. android:id="@+id/demo4"
  24. android:layout_width="fill_parent"
  25. android:layout_height="wrap_content"
  26. android:text="用法4-包含单选按钮的对话框" />
  27. <Button
  28. android:id="@+id/demo5"
  29. android:layout_width="fill_parent"
  30. android:layout_height="wrap_content"
  31. android:text="用法5-包含复选框的对话框" />
  32. </LinearLayout>

3、添加Demo02AlertDialog.cs

在SrcActivity文件夹下添加该文件。

  1. using System.Collections.Generic;
  2. using Android.App;
  3. using Android.OS;
  4. using Android.Widget;
  5.  
  6. namespace ch06demos.SrcActivity
  7. {
  8. [Activity(Label = "Demo02AlertDialog")]
  9. public class Demo02AlertDialog : Activity
  10. {
  11. protected override void OnCreate(Bundle savedInstanceState)
  12. {
  13. base.OnCreate(savedInstanceState);
  14. SetContentView(Resource.Layout.Demo02_AlertDialog);
  15.  
  16. var btn1 = FindViewById<Button>(Resource.Id.demo1);
  17. btn1.Click += delegate
  18. {
  19. //基本用法1(一个按钮)
  20. var dialog = new AlertDialog.Builder(this)
  21. .SetTitle("用法1")
  22. .SetMessage("这是用法1示例的警告信息!")
  23. .SetIcon(Resource.Drawable.Icon)
  24. .SetNeutralButton("确定", (s1, e1) =>
  25. {
  26. Toast.MakeText(this, "OK", ToastLength.Long).Show();
  27. });
  28. dialog.Create().Show();
  29. };
  30.  
  31. var btn2 = FindViewById<Button>(Resource.Id.demo2);
  32. btn2.Click += delegate
  33. {
  34. //基本用法2(两个按钮)
  35. var dialog = new AlertDialog.Builder(this)
  36. .SetTitle("用法2")
  37. .SetMessage("如果继续,将丢失所有未保存的信息,继续吗?")
  38. .SetIcon(Resource.Drawable.Icon)
  39. .SetNegativeButton("是", (sender,args)=>
  40. {
  41. var btnClicked = (sender as AlertDialog).GetButton(args.Which);
  42. Toast.MakeText(this, "你单击了" + btnClicked.Text, ToastLength.Long).Show();
  43. })
  44. .SetPositiveButton("否", (sender, args) =>
  45. {
  46. var btnClicked = (sender as AlertDialog).GetButton(args.Which);
  47. Toast.MakeText(this, "你单击了" + btnClicked.Text, ToastLength.Long).Show();
  48. });
  49. dialog.Create().Show();
  50. };
  51.  
  52. var btn3 = FindViewById<Button>(Resource.Id.demo3);
  53. btn3.Click += delegate
  54. {
  55. //基本用法3(三个按钮)
  56. var dialog = new AlertDialog.Builder(this)
  57. .SetTitle("用法3")
  58. .SetMessage("你准备采用哪种排列方式?")
  59. .SetIcon(Resource.Drawable.Icon)
  60. .SetNegativeButton("从小到大", delegate
  61. {
  62. Toast.MakeText(this, "你单击了[从小到大]", ToastLength.Long).Show();
  63. })
  64. .SetNeutralButton("从大到小", delegate
  65. {
  66. Toast.MakeText(this, "你单击了[从大到小]", ToastLength.Long).Show();
  67. })
  68. .SetPositiveButton("原始顺序", delegate
  69. {
  70. Toast.MakeText(this, "你单击了[原始顺序]", ToastLength.Long).Show();
  71. });
  72. dialog.Create().Show();
  73. };
  74.  
  75. var btn4 = FindViewById<Button>(Resource.Id.demo4);
  76. btn4.Click += delegate
  77. {
  78. //包含单选按钮的对话框
  79. string[] colors = { "红色", "绿色", "蓝色", "深红色" };
  80. int n = ;
  81. var dialog = new AlertDialog.Builder(this)
  82. .SetTitle("用法4-请选择你喜欢的颜色(单选):")
  83. .SetSingleChoiceItems(colors, , (sender, args) =>
  84. {
  85. n = args.Which;
  86. })
  87. .SetNeutralButton("确定", (sender, args) =>
  88. {
  89. Toast.MakeText(this, "你选择了:" + colors[n], ToastLength.Long).Show();
  90. });
  91. dialog.Create().Show();
  92. };
  93.  
  94. var btn5 = FindViewById<Button>(Resource.Id.demo5);
  95. btn5.Click += delegate
  96. {
  97. //包含复选框的对话框
  98. string[] items = { "足球", "篮球", "乒乓球", "排球" };
  99. bool[] selectedItems = new bool[items.Length];
  100. var dialog = new AlertDialog.Builder(this)
  101. .SetTitle("用法5-请选择你参加的体育活动(可多选):")
  102. .SetMultiChoiceItems(items, selectedItems, (s, e) =>
  103. {
  104. if (e.IsChecked) selectedItems[e.Which] = true;
  105. })
  106. .SetNeutralButton("确定", delegate
  107. {
  108. List<string> list = new List<string>();
  109. for (int i = ; i < items.Length; i++)
  110. {
  111. if (selectedItems[i] == true)
  112. {
  113. list.Add(items[i]);
  114. }
  115. }
  116. Toast.MakeText(this, "你的选择是:" + string.Join("、", list.ToArray()), ToastLength.Long).Show();
  117. });
  118. dialog.Create().Show();
  119. };
  120. }
  121. }
  122. }

4、运行

按<F5>键调试运行。

【Android】6.2 AlertDialog(警告对话框)的更多相关文章

  1. Android开发之AlertDialog警告提示框删除与取消 详解代码

    package cc.jiusansec.www; import android.app.Activity; import android.app.AlertDialog; import androi ...

  2. Android中的AlertDialog使用示例一(警告对话框)

    在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,AlertDialog实现方法为建造者模式. ...

  3. Android中的AlertDialog使用示例二(普通选项对话框)

    在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,AlertDialog实现方法为建造者模式. ...

  4. android 开发AlertDialog.builder对话框的实现

    AndroidAPI提供了Dialog对话框控件,但google明确指出不建议开发者只是使用Dialog来创建对话框,而应该自定义对话框或者使用API中提供的Dialog的子类,如AlertDialo ...

  5. Android学习:AlertDialog对话框

    AlertDialog可以生成各种内容的对话框,它生成的对话框包含4个区域:图标区,标题区,内容区,按钮区 <?xml version="1.0" encoding=&quo ...

  6. Android 自定义AlertDialog退出对话框

    Android 自定义AlertDialog退出对话框 转 https://blog.csdn.net/wkh11/article/details/53081634在项目中很多时候会出现点击返回键出现 ...

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

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

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

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

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

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

随机推荐

  1. 读取Mat文件中的汉字代码

    拿到一种元数据,格式为*.mat,但Access打不开,百度也没看到比较好的解决方案. 但是用文本文档可以打开,那估计它和txt类似了,于是想自己写代码来处理了,立马写了读取的丑陋工具.读取是没什么问 ...

  2. linux可视化桌面安装

    [root@VM_193_201_centos ~]# yum grouplist Loaded plugins: fastestmirror, langpacks There is no insta ...

  3. PG里如何查看表,索引,表空间,数据库大小

    --查询一个索引大小 select pg_size_pretty(pg_relation_size('indexname)) --查看一张表及此它上的索引总大小select pg_size_prett ...

  4. html5之canvas画图 1.写字板功能

     写字板事例:       写字板分析:1.点击鼠标開始写字(onmosedown)2.按下鼠标写字(onmousemove)3.松开鼠标,停下写字(撤销onmousemove事件):       代 ...

  5. Oracle常用标准表

    一.INV(库存) 子库存:mtl_secondary_inventories 事物处理:mtl_material_transactions mmt 事务处理来源类型:mtl_txn_source_t ...

  6. 插入UUID,出现Data truncation: Data too long for column 'id' at row 1

    ssc.udf.register("getuuid", () => UUID.randomUUID().toString) val stuPCountDF_tmp1=ssc. ...

  7. default

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  8. Spring Framework Ecosystem – Introduction to Spring Projects

    来自于:http://springtutorials.com/spring-ecosystem/ Hello and Welcome to Spring Tutorials Blog! Is it f ...

  9. [原创]-[WEB]代码高亮工具

    代码高亮显示,不是什么新鲜玩艺了,各种各样的插件多了去了.       一开始想在baidu空间里贴代码,用GeSHi生成的高亮HTML复制到编辑器就可以了,不过QQ空间却不行,复制过去的格式全部被清 ...

  10. 去掉cb中括号的匹配

    Settings->Editor->General settings->Indent options->Brace completion``