第6章(3) 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>键调试运行。

时间: 2024-07-30 13:47:48

第6章(3) AlertDialog(警告对话框)的相关文章

Android中的AlertDialog(警告对话框)

在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,AlertDialog实现方法为建造者模式.下面我们模拟卸载应用程序时弹出的最为普通的警告对话框,如下图: layout布局界面代码示例: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="h

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

AndroidAPI提供了Dialog对话框控件,但google明确指出不建议开发者只是使用Dialog来创建对话框,而应该自定义对话框或者使用API中提供的Dialog的子类,如AlertDialog.接下来记录下AlertDialog的具体使用,供广大初学者学习,也供自己日后查阅. 首先在资源文件xml中写入一个按钮. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmln

matlab学习------------普通dialog对话框,错误对话框errordlg,警告对话框warndlg

Dialog对话框 语法: h = dialog('PropertyName',PropertyValue,...) 对话框的默认属性 WindowStyle的值:   {normal} | modal | docked 具体实例: out = dialog;    %默认显示对话框之后点击对话框中的空白部分对话框会关闭掉 结果: %普通对话框 out = dialog('WindowStyle', 'normal',... 'Name', '我的Dialog对话框',... 'position

iOS开发从入门到精通-- 警告对话框UIAlertView和等待提示器UIActivityIndicatorView

警告对话框UIAlertView和等待提示器UIActivityIndicatorView: 1.UIAlertView简单一点就是弹框 2.就是所谓的菊花转圈圈 声明:注意@interface ViewController : UIViewController<UIAlertViewDelegate>这个里面多了一个UIAlertViewDelegate代理 #import <UIKit/UIKit.h> @interface ViewController : UIViewCon

关于安卓开发使用AlertDialog实现对话框

AlertDialog 类的功能非常强大,它不仅可以生成带按钮的提示对话框,还可以生成带列表的对话框. 使用AlertDialog实现对话框建一个layout文件 alert.xml  添加一个按钮 命名为:显示带取消中立确定按钮的对话框建一个activity  AlertDialog_lianxi.java 为按钮添加一个事件监听器 layout中添加按钮 1 <Button 2 android:id="@+id/button1" 3 android:layout_width=

IOS开发之XCode学习014:警告对话框和等待提示器

此文学习来源为:http://study.163.com/course/introduction/1002858003.htm 此工程文件实现功能:  1.警告对话框和等待提示器的概念 2.警告对话框和等待提示器的属性 3.警告对话框和等待提示器的使用 ===========================ViewController.h脚本============================== @interface ViewController : UIViewController <U

AlertDialog设计对话框

MainActivity.java        public class MainActivity extends Activity {       TextView show;       String[] items = new String[] {               "疯狂Java讲义", "疯狂Ajax讲义",               "轻量级Java EE企业应用实战",               "疯狂An

《第一行代码》BroadcastBestPractice中出现的问题及解决方案(关于AlertDialog系统对话框的使用)

该程序为<第一行代码>中的一个小demo,意在学习使用广播实现强制下线功能. 按<第一行代码>中的源码编写ForceOfflineReceiver类,用于接收广播并处理,代码如下: public class ForceOfflineReceiver extends BroadcastReceiver { @Override public void onReceive(final Context context, Intent intent) { AlertDialog.Builde

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

对话框: 代码: 1 public void click(View v) { 2 AlertDialog.Builder builder = new AlertDialog.Builder(this); 3 builder.setIcon(android.R.drawable.alert_dark_frame); 4 builder.setTitle("鼻血俭朴"); 5 builder.setMessage("尹志平,请考虑好!!!"); 6 builder.se