AlertDialog(警告对话框)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AlertDialog(警告对话框)相关的知识,希望对你有一定的参考价值。

分类: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>键调试运行。

以上是关于AlertDialog(警告对话框)的主要内容,如果未能解决你的问题,请参考以下文章

Android 中AlertDialog警告对话框的使用

AlertDialog(警告对话框)

在警告对话框中显示textview

无法在片段内创建对话框

AlertDialog在Function / OnTap中设置

Android 封装对话框工具类