zoukankan      html  css  js  c++  java
  • 【Android】6.2 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、运行截图

    image

    image

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

  • 相关阅读:
    python+OpenCV 特征点检测
    如何使用《DB 查询分析器》高效地生成旬报货运量数据
    Hive-RCFile文件存储格式
    NET:交换机的背板带宽,交换容量,包转发率区别
    css:cdata
    [ZOJ 3623] Battle Ships
    [NYOJ 860] 又见01背包
    [Uva 11825] Hackers’ Crackdown
    2014-10-29
    [转] 三鲜之所在
  • 原文地址:https://www.cnblogs.com/rainmj/p/5185196.html
Copyright © 2011-2022 走看看