一、什么是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对话框的更多相关文章

  1. Android学习十九:ContentProvider初步

    一.Content Provider基本概念 1.ContentProvider为存储和获取数据提供了统一的接口.ContentProvide对数据进行封装.不用关心数据存储的细节.使用表的形式来组织 ...

  2. Android中制作自定义dialog对话框的实例

    http://www.jb51.net/article/83319.htm   这篇文章主要介绍了Android中制作自定义dialog对话框的实例分享,安卓自带的Dialog显然不够用,因而我们要继 ...

  3. Android进阶(十九)AndroidAPP开发问题汇总(三)

    Android进阶(十九)AndroidAPP开发问题汇总(三) Java解析XML的几种方式: http://inotgaoshou.iteye.com/blog/1012188 从线程返回数据的两 ...

  4. android 学习随笔十九(对话框、样式、主题、国际化 )

    1.对话框 package com.itheima.dialog; import android.os.Bundle; import android.app.Activity; import andr ...

  5. 强化学习(十九) AlphaGo Zero强化学习原理

    在强化学习(十八) 基于模拟的搜索与蒙特卡罗树搜索(MCTS)中,我们讨论了MCTS的原理和在棋类中的基本应用.这里我们在前一节MCTS的基础上,讨论下DeepMind的AlphaGo Zero强化学 ...

  6. MFC编程入门之十九(对话框:颜色对话框)

    在上一节中为大家讲解了字体对话框的使用方法,熟悉了字体对话框,本节继续讲另一种通用对话框--颜色对话框. 颜色对话框大家肯定也不陌生,我们可以打开它选择需要的颜色,简单说,它的作用是用来选择颜色.MF ...

  7. Android学习总结——系统提示对话框(AlertDialog)

    new AlertDialog.Builder(MainActivity.this).setTitle("退出")//设置对话框标题 .setMessage("官人可是要 ...

  8. VS2010/MFC编程入门之十九(对话框:颜色对话框)

    鸡啄米在上一节中为大家讲解了字体对话框的使用方法,熟悉了字体对话框,本节继续讲另一种通用对话框--颜色对话框. 颜色对话框大家肯定也不陌生,我们可以打开它选择需要的颜色,简单说,它的作用就是用来选择颜 ...

  9. android学习十四(android的接收短信)

    收发短信是每一个手机主要的操作,android手机当然也能够接收短信了. android系统提供了一系列的API,使得我们能够在自己的应用程序里接收和发送短信. 事实上接收短信主要是利用我们前面学过的 ...

  10. Scala学习十九——解析

    一.本章要点 文法定义中的二选一.拼接.选项和重复在Scala组合子解析器中对应|.~.opt和rep 对于RegexParsers而言,字符串字面量和正则表达式匹配的是词法单元 用^^来处理解析结果 ...

随机推荐

  1. js函数的参数

    js函数的参数: js是弱类型的编程语言,调用函数时既不在乎函数的参数,也不在意参数的类型 即便你定义的函数值接受两个参数,在调用这个函数时也未必一定要是两个参数.可以传递一个.三个甚至不传递参数,而 ...

  2. 【TEST】NOI-Linux可用 gedit c++精简配置 附Emacs日常配置

    这里是backup的测试随笔,用于测试 CSS / Markdown 效果. 同时也是是本菜鸡考场上一般使用的Gedit配置. 只有6行,挺短的.应该算好记吧. 使用之前记得勾选首选项里的外部工具. ...

  3. log4net日志分割,按大小分割

    最近写了一个socket通信的手表在线服务端,在日志方面,记录下Log4net日志分割 1.引入log4net.dll 2.web.config添加configsection handler 映射: ...

  4. 培训补坑(day2:割点与桥+强联通分量)

    补坑ing... 好吧,这是第二天. 这一天我们主要围绕的就是一个人:tarjan......创造的强联通分量算法 对于这一天的内容我不按照顺序来讲,我们先讲一讲强联通分量,然后再讲割点与桥会便于理解 ...

  5. 杭电oj2012-2021

    2012  素数判定 #include <stdio.h> #include <math.h> int main() { int x,y,i,j,a,flag; while(s ...

  6. python爬虫搜片利器fmovice【转载】

    本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/python/ 前言 讲真!小编不管看什么电影(大的.小的),不管什么电视剧,小编都没买 ...

  7. Android studio配置使debug签名和release签名一致

    在module的build.gradle中添加 android { //重要部分 signingConfigs { release { keyAlias 'jxt' keyPassword '1234 ...

  8. linux下使用gcc/g++编译代码时gets函数有错误

    今天在linux中使用个g++编译一个名为myfirst.cpp的代码的时候,出现如下错误 myfirst.cpp: In function ‘int main()’:myfirst.cpp:11:2 ...

  9. lor实践

    1.启动一个nginx监听8888端口, -p 指定工作目录 -c 指定加载配置文件 在nginx.conf中,写一个server,进入lor项目的入口文件main.lua 2.main.lua执行r ...

  10. Flash3D学习计划(二)——理解世界,取景,投影变换,并理解投影坐标系

    各种坐标系都是有用的,因为某些信息只能在特定场景中才有意义. 一. 世界坐标系 世界坐标系是一个特殊的坐标系,它建立了描述其他坐标系所需要的参考框架.这就意味着,能够用世界坐标系描述其他坐标系的位置, ...