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而言,字符串字面量和正则表达式匹配的是词法单元 用^^来处理解析结果 ...
随机推荐
- SQL Server 及 Visual Studio的离线帮助文档
1>Sql Server帮助文档下载:地址 2>Visual Studion帮助文档下载:地址 3>安装Help Viewer 4>浏览到刚才下载的文件处进行安装 4>设 ...
- Hoof, Paper, Scissors(USACO)
题目大意: 一种游戏(类似于石头剪刀布):两个人分别给出一个字母,然后比较:H>S,S>P,P>H,我们已知对手的字母顺序,求在前n局中我们最多能赢多少次. 由于出字母的人非常懒,所 ...
- c/c++中const用法总结
1.修饰常量时: const int temp1; //temp1为常量,不可变 int const temp2; //temp2为常量,不可变 2.修饰指针时: 主要看const在*的前后,在前 ...
- Kubernetes-glusterfs配置
#############################################pvc与pv的区别#pv可以看做一块硬盘,pv可以有很多块不同大小的硬盘,比如有10G,50G,100G的3个 ...
- ZOJ2112 Dynamic Rankings(整体二分)
今天学习了一个奇技淫巧--整体二分.关于整体二分的一些理论性的东西,可以参见XRH的<浅谈数据结构题的几个非经典解法>.然后下面是一些个人的心得体会吧,写下来希望加深一下自己的理解,或者如 ...
- hdu 5145(莫队算法+逆元)
NPY and girls Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...
- PhpStrom弹窗License activation 报 this license BIG3CLIK6F has been cancelled 错误的解决。
将“0.0.0.0 account.jetbrains.com”添加到hosts文件中
- js-限制参与活动的范围(微信H5活动)
近期接到大连某个项目,一个H5的活动,其中有一个需求就是:这个活动的参与者仅限大连地区的用户 所以参考了微信API 得出的操作结果为: wx.ready(function() { wx.getLoca ...
- Codeforces 1018D D. Order book
解法:用l,r分别代表buy的最大值和sell的最小值,add时,若添加的值在l,r之间,则该值有可能作为下一次accept的值 accept x时,x只能在区间[l,r]中,否则无解,若x为l或r, ...
- android如何取消闹铃
取消闹钟: Intent intent = new Intent(context, TestReceiver.class); PendingIntent pi = PendingIntent.getB ...