Android学习(十九)Dialog对话框
一、什么是Dialog对话框
对话框是当前页面中弹出的一个小窗口,用于显示重要的提示信息,提示用户输入信息,确认信息,或者显示某种状态,如下载进度,退出提示等等。用户需要与对话框进行交互,才能回到原窗口继续执行。
二、几种常见的对话框
1、确认对话框。
2、单选按钮对话框。
3、多选按钮对话框。
4、列表对话框。
5、自定义对话框。

三、Dialog的常用方法
1、 AlertDialog.Builder中的create()方法,创建一个dialog。
2、setTitle(),设置标题
3、setIcon():为对话框设置图标。
4、setMessage():为对话框设置内容。
5、setView():为对话框设置自定义样式。
6、setItems():设置对话框要显示一个list。
7、setSingleChoiceItems():显示单选按钮列表
8、setMultiChoiceItems():显示复选按钮列表
9、setNeutralButton():普通按钮
10、setPositiveButton():给对话框添加确认按钮。
11、setNegativeButton():给对话框添加取消按钮。
四、示例代码,确认对话框、单选对话框,多选对话框,列表对话框,自定义对话框五种对话框。
main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity"> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="对话框代码示例" /> <Button
android:id="@+id/btn_dialog1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="确认对话框"/> <Button
android:id="@+id/btn_dialog2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="单选按钮对话框"/> <Button
android:id="@+id/btn_dialog3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="多选按钮对话框"/> <Button
android:id="@+id/btn_dialog4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="列表对话框"/> <Button
android:id="@+id/btn_dialog5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="自定义对话框"/> </LinearLayout>
dialog_layout.xml 自定义对话框布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"> <EditText
android:layout_width="200dp"
android:layout_height="wrap_content" /> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="确定" />
</LinearLayout>
后台代码,mai.java
package com.example.zhengcheng.myapplication; import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.Toast; public class MainActivity extends Activity { Button btn_dialog1;
Button btn_dialog2;
Button btn_dialog3;
Button btn_dialog4;
Button btn_dialog5; String[] item_list1 = new String[]{"男", "女"}; //单选列表数据
String[] item_list2 = new String[]{"篮球", "乒乓球", "羽毛球", "足球", "游泳"}; //多选列表数据
boolean[] selected = new boolean[]{false, false, false, false, false}; //多选列表选中状态
String[] item_list3 = new String[]{"项目部", "设计部", "测试部", "人事部"}; //列表框数据 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //确认对话框
btn_dialog1 = (Button) findViewById(R.id.btn_dialog1);
btn_dialog1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//创建一个builder对象,用来设置对话框属性
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("对话框标题"); //设置对话框标题
builder.setIcon(R.mipmap.ic_launcher); //设置对话框图标
builder.setMessage("是否退出"); //设置对话框内容
//设置对话框确定按钮
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "点击了确认按钮", Toast.LENGTH_SHORT).show();
}
}); //设置对话框取消按钮
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "点击了取消按钮", Toast.LENGTH_SHORT).show();
}
});
//创建对话框对象
AlertDialog dialog = builder.create();
dialog.show(); //显示对话框
}
}); //单选按钮对话框
btn_dialog2 = (Button) findViewById(R.id.btn_dialog2);
btn_dialog2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//创建一个builder对象,用来设置对话框属性
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("选择性别"); //设置对话框标题
builder.setIcon(R.mipmap.ic_launcher); //设置对话框图标
builder.setSingleChoiceItems(item_list1, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String sex = item_list1[which];
Toast.makeText(MainActivity.this, sex, Toast.LENGTH_SHORT).show();
dialog.dismiss(); //关闭对话框
}
}); //创建对话框对象
AlertDialog dialog = builder.create();
dialog.show(); //显示对话框
}
}); //复选按钮对话框
btn_dialog3 = (Button) findViewById(R.id.btn_dialog3);
btn_dialog3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//创建一个builder对象,用来设置对话框属性
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("选择爱好"); //设置对话框标题
builder.setIcon(R.mipmap.ic_launcher); //设置对话框图标 //设置多选按钮对话框,第一个参数为列表数据,第二各参数为上次选中的数据,为boolean类型数组
builder.setMultiChoiceItems(item_list2, selected, new DialogInterface.OnMultiChoiceClickListener() {
//点击复选框按钮
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if (isChecked) {
//创建数组,记录选中状态
selected[which] = isChecked;
}
}
}); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String choice = "";
for (int i = 0; i < selected.length; i++) {
if (selected[i]) { //根据选中状态获取数组中的值
choice += item_list2[i];
}
} Toast.makeText(MainActivity.this, choice.toString(), Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
}); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}); //创建对话框对象
AlertDialog dialog = builder.create();
dialog.show(); //显示对话框
}
}); //列表对话框
btn_dialog4 = (Button) findViewById(R.id.btn_dialog4);
btn_dialog4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//创建一个builder对象,用来设置对话框属性
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("选择部门"); //设置对话框标题
builder.setIcon(R.mipmap.ic_launcher); //设置对话框图标
builder.setSingleChoiceItems(item_list3, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String department = item_list3[which];
Toast.makeText(MainActivity.this, department, Toast.LENGTH_SHORT).show();
dialog.dismiss(); //关闭对话框
}
}); //创建对话框对象
AlertDialog dialog = builder.create();
dialog.show(); //显示对话框
}
}); //自定义对话框
btn_dialog5 = (Button) findViewById(R.id.btn_dialog5);
btn_dialog5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//获取Layout布局
LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
View view = inflater.inflate(R.layout.dialog_layout,null); //创建一个builder对象,用来设置对话框属性
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("选择部门"); //设置对话框标题
builder.setIcon(R.mipmap.ic_launcher); //设置对话框图标
//设置builder的视图为自定义视图
builder.setView(view); //创建对话框对象
AlertDialog dialog = builder.create();
dialog.show(); //显示对话框
}
});
}
}
Android学习(十九)Dialog对话框的更多相关文章
- Android学习十九:ContentProvider初步
一.Content Provider基本概念 1.ContentProvider为存储和获取数据提供了统一的接口.ContentProvide对数据进行封装.不用关心数据存储的细节.使用表的形式来组织 ...
- Android中制作自定义dialog对话框的实例
http://www.jb51.net/article/83319.htm 这篇文章主要介绍了Android中制作自定义dialog对话框的实例分享,安卓自带的Dialog显然不够用,因而我们要继 ...
- Android进阶(十九)AndroidAPP开发问题汇总(三)
Android进阶(十九)AndroidAPP开发问题汇总(三) Java解析XML的几种方式: http://inotgaoshou.iteye.com/blog/1012188 从线程返回数据的两 ...
- android 学习随笔十九(对话框、样式、主题、国际化 )
1.对话框 package com.itheima.dialog; import android.os.Bundle; import android.app.Activity; import andr ...
- 强化学习(十九) AlphaGo Zero强化学习原理
在强化学习(十八) 基于模拟的搜索与蒙特卡罗树搜索(MCTS)中,我们讨论了MCTS的原理和在棋类中的基本应用.这里我们在前一节MCTS的基础上,讨论下DeepMind的AlphaGo Zero强化学 ...
- MFC编程入门之十九(对话框:颜色对话框)
在上一节中为大家讲解了字体对话框的使用方法,熟悉了字体对话框,本节继续讲另一种通用对话框--颜色对话框. 颜色对话框大家肯定也不陌生,我们可以打开它选择需要的颜色,简单说,它的作用是用来选择颜色.MF ...
- Android学习总结——系统提示对话框(AlertDialog)
new AlertDialog.Builder(MainActivity.this).setTitle("退出")//设置对话框标题 .setMessage("官人可是要 ...
- VS2010/MFC编程入门之十九(对话框:颜色对话框)
鸡啄米在上一节中为大家讲解了字体对话框的使用方法,熟悉了字体对话框,本节继续讲另一种通用对话框--颜色对话框. 颜色对话框大家肯定也不陌生,我们可以打开它选择需要的颜色,简单说,它的作用就是用来选择颜 ...
- android学习十四(android的接收短信)
收发短信是每一个手机主要的操作,android手机当然也能够接收短信了. android系统提供了一系列的API,使得我们能够在自己的应用程序里接收和发送短信. 事实上接收短信主要是利用我们前面学过的 ...
- Scala学习十九——解析
一.本章要点 文法定义中的二选一.拼接.选项和重复在Scala组合子解析器中对应|.~.opt和rep 对于RegexParsers而言,字符串字面量和正则表达式匹配的是词法单元 用^^来处理解析结果 ...
随机推荐
- Handler 源码分析
Handler用法: 无参 Handler 构造函数实例化一个 Handler 类型的全局变量,并重写其 handleMessage 方法,在某一方法内调用 Handler 的 sendEmptyMe ...
- (转)cygwin包管理器apt-cyg
通过终端安装apt-cyg之前选要安装以下软件包 wget tar gawk bzip2 Cygwin终端安装 wget http://apt-cyg.googlecode.com/svn/trunk ...
- windows 2012(64位) IIS配置asp程序 500 - 内部服务器错误。您查找的资源存在问题,因而无法显示。
在网上找了很久,包括常规的设置父路径之类的,一直都不可以,搞了一晚上毫无成就感,第二天早上无意中看到一篇文章,说到点子上了,非常感谢.源地址已经找不到了,我把大概的问题截图说明一下. 方法如下:1.打 ...
- django中的类视图
# 原创,转载请留言联系 当我们在开发一个注册模块时.浏览器会通过get请求让注册表单弹出来,然后用户输完注册信息后,通过post请求向服务端提交信息.这时候我们后端有两个视图函数,一个处理get请求 ...
- Spring Mvc 传递参数要controller出现了400,日期参数全局处理,格式化yyyy-MM-dd 和yyyy-MM-dd HH:mm:ss
描述:今天做一个业务操作的时候,ajax传递参数要controller出现了400,前后台都没有报错. 问题:springmvc 在接收日期类型参数时,如不做特殊处理 会出现400语法格式错误 解决: ...
- C# Socket的粘包处理(转)
http://www.cnblogs.com/aarond/p/Socket111.html 当socket接收到数据后,会根据buffer的大小一点一点的接收数据,比如: 对方发来了1M的数据量过来 ...
- (3)oracle建用户、建表、权限、命名空间
一.表空间 创建表空间 create tablespace ts001 datafile ‘d:\test\a.dbf’ size 20m uniform size 128k; 使用表空间 cre ...
- 华农oj 2192: hzk又在打人【CRT合并/待补】
2192: hzk又在打人 Time Limit: 12 Sec Memory Limit: 512 MB Submit: 52 Solved: 1 [Submit][Status][Web Boar ...
- 51nod 1413 权势二进制【进制思维】
1413 权势二进制 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 一个十进制整数被叫做权势二进制,当他的十进制 ...
- uvalive4108(线段树)
uvalive4108 题意 按顺序给出 n 个矩形,每给出一个矩形,统计它在多长的部分是最高的,并把这个长度称为该矩形的覆盖度,求最后总的覆盖度(每次得到的矩形的覆盖度之和) 分析 线段树.用两个数 ...