分类: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 = ;
var dialog = new AlertDialog.Builder(this)
.SetTitle("用法4-请选择你喜欢的颜色(单选):")
.SetSingleChoiceItems(colors, , (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 = ; 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>键调试运行。

【Android】6.2 AlertDialog(警告对话框)的更多相关文章

  1. Android开发之AlertDialog警告提示框删除与取消 详解代码

    package cc.jiusansec.www; import android.app.Activity; import android.app.AlertDialog; import androi ...

  2. Android中的AlertDialog使用示例一(警告对话框)

    在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,AlertDialog实现方法为建造者模式. ...

  3. Android中的AlertDialog使用示例二(普通选项对话框)

    在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,AlertDialog实现方法为建造者模式. ...

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

    AndroidAPI提供了Dialog对话框控件,但google明确指出不建议开发者只是使用Dialog来创建对话框,而应该自定义对话框或者使用API中提供的Dialog的子类,如AlertDialo ...

  5. Android学习:AlertDialog对话框

    AlertDialog可以生成各种内容的对话框,它生成的对话框包含4个区域:图标区,标题区,内容区,按钮区 <?xml version="1.0" encoding=&quo ...

  6. Android 自定义AlertDialog退出对话框

    Android 自定义AlertDialog退出对话框 转 https://blog.csdn.net/wkh11/article/details/53081634在项目中很多时候会出现点击返回键出现 ...

  7. [Android Pro] Android 官方推荐 : DialogFragment 创建对话框

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37815413 1. 概述 DialogFragment在android 3.0时 ...

  8. 转帖:Android 官方推荐 : DialogFragment 创建对话框

    转: Android 官方推荐 : DialogFragment 创建对话框 复制内容,留作备份 1. 概述 DialogFragment在android 3.0时被引入.是一种特殊的Fragment ...

  9. AlertDialog.Builder对话框类的用法

    1.在测试时,如何实现一个提示 可以使用 Toast.makeText(this, "这是一个提示", Toast.LENGTH_SHORT).show(); //从资源文件str ...

随机推荐

  1. ZH奶酪:VirtualBox虚拟机与主机ping不通

    6.进入虚拟机的Ubuntu(以下简称VBUbuntu),在VBUbuntu中用ifconfig查看ip地址,在Windows7中用ipconfig查看ip地址. 在VBUbuntu中ping Win ...

  2. android google map v1 v2 v3 参考

    V1,V2已经不被推荐使用,谷歌强烈推荐使用V3. 本人在选择时着实纠结了良久,现在总结如下: 对于V1,现在已经申请不到API KEY了,所以不要使用这个版本.这个是网址:https://devel ...

  3. 分离链接散列表C语言实现实例

    /* hash_sep.h */ #ifndef _HASH_SEP_H #define _HASH_SEP_H #define MIN_TABLE_SIZE 5 struct list_node; ...

  4. 算法笔记_109:第四届蓝桥杯软件类省赛真题(JAVA软件开发本科B组部分习题)试题解答

    目录 1 马虎的算式 2 黄金连分数 3 有理数类 4 幸运数 5 连号区间数   前言:以下试题解答代码部分仅供参考,若有不当之处,还请路过的同学提醒一下~ 1 马虎的算式 标题: 马虎的算式 小明 ...

  5. SHELL有用的命令

    [root@gechong /]# find / -name "gechong*" -print [root@gechong /]# find / -name "[A-Z ...

  6. ERROR 1820 (HY000): You must SET PASSWORD before executing this statement

    Linux rpm方式安装完MySQL之后 mysql>SET PASSWORD = PASSWORD('newpasswd');

  7. word2vec模型cbow与skip-gram的比较

    cbow和skip-gram都是在word2vec中用于将文本进行向量表示的实现方法,具体的算法实现细节可以去看word2vec的原理介绍文章.我们这里大体讲下两者的区别,尤其注意在使用当中的不同特点 ...

  8. webpack 处理CSS

    1.安装插件 npm i style-loader css-loader --save-dev npm i postcss-loader --save-dev npm i autoprefixer - ...

  9. maven Dynamic Web Module 3.0 requires Java 1.6 or newer

      maven Dynamic Web Module 3.0 requires Java 1.6 or newer CreateTime--2018年4月19日16:56:42 Author:Mary ...

  10. 〖Linux〗Ubuntu13.10,声音图标调节音量失效的解决办法

    升级Ubuntu13.10,发现声音图标不能调节音量[XUbuntu13.10发行日志]: 临时解决办法: gvim /usr/share/dbus-1/services/indicator-soun ...