分类: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文件夹下添加该文件。

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:gravity="center">    <Button        android:id="@+id/demo1"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="用法1-简单对话框(一个按钮)" />    <Button        android:id="@+id/demo2"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="用法2-简单对话框(两个按钮)" />    <Button        android:id="@+id/demo3"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="用法3-简单对话框(三个按钮)" />    <Button        android:id="@+id/demo4"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="用法4-包含单选按钮的对话框" />    <Button        android:id="@+id/demo5"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="用法5-包含复选框的对话框" /></LinearLayout>

3、添加Demo02AlertDialog.cs

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

using System.Collections.Generic;using Android.App;using Android.OS;using Android.Widget;namespace ch06demos.SrcActivity{    [Activity(Label = "Demo02AlertDialog")]    public class Demo02AlertDialog : Activity    {      protected override void OnCreate(Bundle savedInstanceState)      {            base.OnCreate(savedInstanceState);            SetContentView(Resource.Layout.Demo02_AlertDialog);            var btn1 = FindViewById<Button>(Resource.Id.demo1);            btn1.Click += delegate            {                //基本用法1(一个按钮)                var dialog = new AlertDialog.Builder(this)                    .SetTitle("用法1")                    .SetMessage("这是用法1示例的警告信息!")                    .SetIcon(Resource.Drawable.Icon)                    .SetNeutralButton("确定", (s1, e1) =>                    {                        Toast.MakeText(this, "OK", ToastLength.Long).Show();                    });                dialog.Create().Show();            };            var btn2 = FindViewById<Button>(Resource.Id.demo2);            btn2.Click += delegate            {                //基本用法2(两个按钮)                var dialog = new AlertDialog.Builder(this)                    .SetTitle("用法2")                    .SetMessage("如果继续,将丢失所有未保存的信息,继续吗?")                    .SetIcon(Resource.Drawable.Icon)                    .SetNegativeButton("", (sender,args)=>                    {                        var btnClicked = (sender as AlertDialog).GetButton(args.Which);                        Toast.MakeText(this, "你单击了" + btnClicked.Text, ToastLength.Long).Show();                    })                    .SetPositiveButton("", (sender, args) =>                    {                        var btnClicked = (sender as AlertDialog).GetButton(args.Which);                        Toast.MakeText(this, "你单击了" + btnClicked.Text, ToastLength.Long).Show();                    });                dialog.Create().Show();            };            var btn3 = FindViewById<Button>(Resource.Id.demo3);            btn3.Click += delegate            {                //基本用法3(三个按钮)                var dialog = new AlertDialog.Builder(this)                    .SetTitle("用法3")                    .SetMessage("你准备采用哪种排列方式?")                    .SetIcon(Resource.Drawable.Icon)                    .SetNegativeButton("从小到大", delegate                    {                        Toast.MakeText(this, "你单击了[从小到大]", ToastLength.Long).Show();                    })                    .SetNeutralButton("从大到小", delegate                    {                        Toast.MakeText(this, "你单击了[从大到小]", ToastLength.Long).Show();                    })                    .SetPositiveButton("原始顺序", delegate                    {                        Toast.MakeText(this, "你单击了[原始顺序]", ToastLength.Long).Show();                    });                dialog.Create().Show();            };            var btn4 = FindViewById<Button>(Resource.Id.demo4);            btn4.Click += delegate            {                 //包含单选按钮的对话框                 string[] colors = { "红色", "绿色", "蓝色", "深红色" };                 int n = 0;                 var dialog = new AlertDialog.Builder(this)                     .SetTitle("用法4-请选择你喜欢的颜色(单选):")                     .SetSingleChoiceItems(colors, 0, (sender, args) =>                     {                         n = args.Which;                     })                    .SetNeutralButton("确定", (sender, args) =>                    {                        Toast.MakeText(this, "你选择了:" + colors[n], ToastLength.Long).Show();                    });                 dialog.Create().Show();             };            var btn5 = FindViewById<Button>(Resource.Id.demo5);            btn5.Click += delegate            {                //包含复选框的对话框                string[] items = { "足球", "篮球", "乒乓球", "排球" };                bool[] selectedItems = new bool[items.Length];                var dialog = new AlertDialog.Builder(this)                    .SetTitle("用法5-请选择你参加的体育活动(可多选):")                    .SetMultiChoiceItems(items, selectedItems, (s, e) =>                    {                        if (e.IsChecked) selectedItems[e.Which] = true;                    })                   .SetNeutralButton("确定", delegate                   {                       List<string> list = new List<string>();                       for (int i = 0; i < items.Length; i++)                       {                           if (selectedItems[i] == true)                           {                               list.Add(items[i]);                           }                       }                       Toast.MakeText(this, "你的选择是:" + string.Join("", list.ToArray()), ToastLength.Long).Show();                   });                dialog.Create().Show();            };        }    }}

4、运行

按<F5>键调试运行。

更多相关文章

  1. 在eclipse中搭建android开发平台
  2. Toast的用法
  3. 高仿IOS的Android的弹出框
  4. Android基础笔记(十)- 帧动画、补间动画详解、对话框
  5. Android单选复选框
  6. android打开文件、保存对话框、创建新文件夹对话框
  7. Android中persistent属性用法详解
  8. Android(安卓)Dialog 对话框详解及示例代码
  9. Android的一个自定义的动态添加Dialog类

随机推荐

  1. android EditText限制输入长度
  2. Android初学者教程
  3. Android——横屏和竖屏的切换,以及明文密
  4. android widget 之EditText
  5. Android(安卓)API包名及包的功能的中文介
  6. Android开机自动启动Wi-Fi热点的方法
  7. Android实例剖析笔记(三)
  8. 如何在Android(安卓)Studio中导入包:andro
  9. Android与iOS:谁更适合HTML 5?
  10. Android中一张图片加载后所占用内存大小