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而言,字符串字面量和正则表达式匹配的是词法单元 用^^来处理解析结果 ...
随机推荐
- 【git】Git 常用命令大全
Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势.
- 小红帽的画笔(NOIP模拟赛Round 7)
又到了神奇的模拟赛时间~ 真是丧~ 好吧我们来看看题目 小红帽是Pop star上最著名的人类画家,她可以将任何画出的东西变成真实的物品.赋予她这样神奇能力的正是她手上的画笔. 小红帽每次作画时,都需 ...
- LINK : fatal error LNK1104: 无法打开文件“mfc71.lib”(转)
原文转自 http://blog.csdn.net/mxclxp/article/details/8196142 [环境] Windows XP OS: Visual Studio 2008: ...
- python登陆github
#!/usr/bin/env python # encoding: utf-8 import requests from headers import headers from lxml import ...
- 解决svn 异常:svn: E155027: Tree conflict can only be resolved to working state; {0} not resolved
以前很少使用svn进行代码管理,时间长了之后也忘得差不多了,但现在公司使用的是svn进行版本管理,使用过程中出现了问题,顺带记一下. 异常情况:切换svn地址之后,发现项目代码无法合并代码,也无法提交 ...
- Flask-宏的相关知识。
转自ITOYO:XIAOJINGJING Jinja2的宏功能有些类似于传统程序语言中的函数,既然是函数就有其声明和调用两个部分. 首先声明一个宏: <html lang="en&qu ...
- 解决ASP.NET裁剪图片失真
//有的时候剪切图片时,出现图片失真的问题,是因为图片质量下降造成的 //按照指定的数据画出画板(位图) System.Drawing.Image imgPhoto = System.Drawing. ...
- ubuntu常用终端命令
# ctrl + l - 清屏 . cLear# ctrl + c - 终止命令. # ctrl + d - 退出 shell,好像也可以表示EOF. # ctrl + z - 将当前进程置于后台,f ...
- Ajax不能跨域访问的解决方案
文章介绍 这是一篇,引导文吧... 因为写这篇文章时,实在想不出该如何分序.因此以实现跨域访问为目的,从基础知识往上写.最后以百度搜索智能提示为例,来讲解跨域的具体应用! 内容 首先,我们得明确什 ...
- vs code 在windows10 64bit系统配置python开发环境
一.搭建 python 环境 在 VSC 中点击 F1 键,弹出控制台,输入 ext install 界面左侧弹出扩展窗格,输入python,确认,开始搜索下载发布者为Don Jayamanne 的 ...