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(警告对话框)的主要内容,如果未能解决你的问题,请参考以下文章