场景

app中常见的对话框。

简单的带确定取消按钮的对话框

带列表的对话框

带单项选择的对话框

带多项选择的对话框

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

将布局改为LinearLayout,并通过android:orientation="vertical">设置为垂直布局。并添加四个按钮

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:gravity="center_horizontal"tools:context=".AlertDialogActivity"><Buttonandroid:id="@+id/button1"android:layout_width="match_parent"android:layout_height="wrap_content"android:textColor="#090808"android:background="#F44336"android:text="1" /><Buttonandroid:id="@+id/button2"android:layout_width="match_parent"android:layout_height="wrap_content"android:textColor="#2196F3"android:background="#FF9800"android:text="2" /><Buttonandroid:id="@+id/button3"android:layout_width="match_parent"android:layout_height="wrap_content"android:textColor="#F44336"android:background="#43b243"android:text="3" /><Buttonandroid:id="@+id/button4"android:layout_width="match_parent"android:layout_height="wrap_content"android:textColor="#9C27B0"android:background="#f9671e"android:text="4" /></LinearLayout>

然后来到Activity

带确定取消按钮的对话框

        // 获取“显示带取消、确定按钮的对话框”按钮Button button1 = (Button) findViewById(R.id.button1);// 为“显示带取消、确定按钮的对话框”按钮添加单击事件监听器button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//创建对话框对象 这里要通过Builder来创建AlertDialog alertDialog = new AlertDialog.Builder(AlertDialogActivity.this).create();alertDialog.setIcon(R.drawable.dog); //设置对话框的图标alertDialog.setTitle("公众号:");      //设置对话框的标题alertDialog.setMessage("霸道的程序猿");    //设置要显示的内容//sdk版本问题if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {//添加取消按钮alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "否", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(AlertDialogActivity.this, "您单击了否按钮", Toast.LENGTH_SHORT).show();}});}//添加确定按钮if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "是", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(AlertDialogActivity.this, "您单击了是按钮 ", Toast.LENGTH_SHORT).show();}});}alertDialog.show(); //显示对话框}});

带列表的对话框

        // 获取“显示带列表的对话框”按钮Button button2 = (Button) findViewById(R.id.button2);button2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//创建水果字符串数组final String[] items = new String[]{"苹果", "橘子", "香蕉","西瓜"};//创建列表对话框对象AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogActivity.this);//设置对话框的图标builder.setIcon(R.drawable.dog);//设置对话框的标题builder.setTitle("请选择你喜欢的水果:");//添加列表项builder.setItems(items, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(AlertDialogActivity.this,"您选择了" + items[which], Toast.LENGTH_SHORT).show();}});builder.create().show();  // 创建对话框并显示}});

带单项选择的对话框

        // 获取“显示带单选列表项的对话框”按钮Button button3 = (Button) findViewById(R.id.button3);button3.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//创建动物字符串数组final String[] items = new String[]{"小猫", "小狗", "乌龟", "金鱼", "小猪"};// 显示带单选列表项的对话框AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogActivity.this);builder.setIcon(R.drawable.dog);                            //设置对话框的图标builder.setTitle("如果让你选择,你最喜欢哪一个:");                    //设置对话框的标题builder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(AlertDialogActivity.this,"您选择了" + items[which], Toast.LENGTH_SHORT).show();    //显示选择结果}});//添加确定按钮builder.setPositiveButton("确定", null);builder.create().show();                                    // 创建对话框并显示}});

带多项选择的对话框

首先声明两个变量用来存储各列表项要显示的内容和记录各列表项的状态

    private boolean[] checkedItems;//记录各列表项的状态private String[] items;//各列表项要显示的内容

然后

        // 获取“显示带多选列表项的对话框”按钮Button button4 = (Button) findViewById(R.id.button4);button4.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {checkedItems = new boolean[]{false, true, false, true, false}; //记录各列表项的状态//各列表项要显示的内容items = new String[]{"开心消消乐", "球球大作战", "欢乐斗地主", "梦幻西游", "超级玛丽"};// 显示带单选列表项的对话框AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogActivity.this);builder.setIcon(R.drawable.dog);                        //设置对话框的图标builder.setTitle("请选择您喜爱的游戏:");                    //设置对话框标题builder.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked) {checkedItems[which] = isChecked;            //改变被操作列表项的状态}});//为对话框添加“确定”按钮builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {String result = "";for (int i = 0; i < checkedItems.length; i++) {//当选项被选择时if (checkedItems[i]) {//将选项的内容添加到result中result += items[i] + "、";}}//当result不为空时,通过消息提示框显示选择的结果if (!"".equals(result)) {//去掉最后面添加的“、”号result = result.substring(0, result.length() - 1);Toast.makeText(AlertDialogActivity.this,"您选择了[ " + result + " ]", Toast.LENGTH_LONG).show();}}});builder.create().show();                                // 创建对话框并显示}});

完整示例代码

package com.badao.relativelayouttest;import androidx.appcompat.app.AppCompatActivity;import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;public class AlertDialogActivity extends AppCompatActivity {private boolean[] checkedItems;//记录各列表项的状态private String[] items;//各列表项要显示的内容@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_alert_dialog);// 获取“显示带取消、确定按钮的对话框”按钮Button button1 = (Button) findViewById(R.id.button1);// 为“显示带取消、确定按钮的对话框”按钮添加单击事件监听器button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//创建对话框对象 这里要通过Builder来创建AlertDialog alertDialog = new AlertDialog.Builder(AlertDialogActivity.this).create();alertDialog.setIcon(R.drawable.dog); //设置对话框的图标alertDialog.setTitle("公众号:");      //设置对话框的标题alertDialog.setMessage("霸道的程序猿");    //设置要显示的内容//sdk版本问题if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {//添加取消按钮alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "否", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(AlertDialogActivity.this, "您单击了否按钮", Toast.LENGTH_SHORT).show();}});}//添加确定按钮if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "是", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(AlertDialogActivity.this, "您单击了是按钮 ", Toast.LENGTH_SHORT).show();}});}alertDialog.show(); //显示对话框}});// 获取“显示带列表的对话框”按钮Button button2 = (Button) findViewById(R.id.button2);button2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//创建水果字符串数组final String[] items = new String[]{"苹果", "橘子", "香蕉","西瓜"};//创建列表对话框对象AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogActivity.this);//设置对话框的图标builder.setIcon(R.drawable.dog);//设置对话框的标题builder.setTitle("请选择你喜欢的水果:");//添加列表项builder.setItems(items, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(AlertDialogActivity.this,"您选择了" + items[which], Toast.LENGTH_SHORT).show();}});builder.create().show();  // 创建对话框并显示}});// 获取“显示带单选列表项的对话框”按钮Button button3 = (Button) findViewById(R.id.button3);button3.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//创建动物字符串数组final String[] items = new String[]{"小猫", "小狗", "乌龟", "金鱼", "小猪"};// 显示带单选列表项的对话框AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogActivity.this);builder.setIcon(R.drawable.dog);                            //设置对话框的图标builder.setTitle("如果让你选择,你最喜欢哪一个:");                    //设置对话框的标题builder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(AlertDialogActivity.this,"您选择了" + items[which], Toast.LENGTH_SHORT).show();    //显示选择结果}});//添加确定按钮builder.setPositiveButton("确定", null);builder.create().show();                                    // 创建对话框并显示}});// 获取“显示带多选列表项的对话框”按钮Button button4 = (Button) findViewById(R.id.button4);button4.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {checkedItems = new boolean[]{false, true, false, true, false}; //记录各列表项的状态//各列表项要显示的内容items = new String[]{"开心消消乐", "球球大作战", "欢乐斗地主", "梦幻西游", "超级玛丽"};// 显示带单选列表项的对话框AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogActivity.this);builder.setIcon(R.drawable.dog);                        //设置对话框的图标builder.setTitle("请选择您喜爱的游戏:");                    //设置对话框标题builder.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked) {checkedItems[which] = isChecked;            //改变被操作列表项的状态}});//为对话框添加“确定”按钮builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {String result = "";for (int i = 0; i < checkedItems.length; i++) {//当选项被选择时if (checkedItems[i]) {//将选项的内容添加到result中result += items[i] + "、";}}//当result不为空时,通过消息提示框显示选择的结果if (!"".equals(result)) {//去掉最后面添加的“、”号result = result.substring(0, result.length() - 1);Toast.makeText(AlertDialogActivity.this,"您选择了[ " + result + " ]", Toast.LENGTH_LONG).show();}}});builder.create().show();                                // 创建对话框并显示}});}
}

Android中使用AlertDialog实现几种不同的对话框相关推荐

  1. android xpath解析xml,Android 中处理 XML 的四种方式-DOM

    Android 中处理 XML 的几种方式连载中,我们就不介绍合成 XML 了,因为合成 XML 可以直接拼接字符串,虽然看起很不高大上,但却很有效.我们主要介绍如何取 XML 中的值. 适用 DOM ...

  2. Android中播放音乐的几种方式

    Android中播放音乐的几种方式 前言 前几天一直在研究RxJava2,也写了记录了几篇博客,但因为工作任务原因,需要研究音频相关的知识,暂时放下Rxjava,本文的demo中,MediaPalye ...

  3. android获取颜色资源,Android中获取颜色的几种方法

    Android中获取颜色的几种方法: 通过android封装好的Color类中的常量 public static final int BLACK = 0xFF000000; public static ...

  4. Android中添加背景音乐的两种方法

    前些天在尝试自己写一个Android小游戏--flybird 基本功能实现了,就想添加声音,然后上网查了查,大多是一样,可是用到我这,有些却不可以用,所以我还用了两种方法. 下面谈谈这两种方法. 方法 ...

  5. Android中获取网络图片的三种方法

    android中获取网络图片是一件耗时的操作,如果直接获取有可能会出现应用程序无响应(ANR:Application Not Responding)对话框的情况.对于这种情况,一般的方法就是耗时操作用 ...

  6. Android中夜间模式的三种实现方式

    参考:https://www.jianshu.com/p/f3aaed57fa15 在本篇文章中给出了三种实现日间/夜间模式切换的方案: 使用 setTheme 的方法让 Activity 重新设置主 ...

  7. Android中圆形图的几种实现方式

    在Android开发中,圆形图片是很常见的,例如淘宝的宝贝,QQ的联系人头像等都是圆形的图片, 但是Android原生的ImageView又不能显示圆形的图片,这就需要我们自己去实现一个圆形图了 一. ...

  8. android遍历的方法,android中遍历arrayList的四种方法

    一.在android中遍历arrayList有以下四种方法: 1.实例: package com.mylist.test; import java.util.ArrayList; import jav ...

  9. Android中字体颜色大全-146种(完整版)

     附Android中146种颜色对应的xml色值: <?xml version="1.0" encoding="utf-8"?> <res ...

最新文章

  1. Android EditText回车不换行
  2. 分布式缓存redis 方案_Redis缓存和MySQL数据一致性方案详解
  3. 随笔(2018.8.31)
  4. android之broadcast发送广播
  5. C++智能指针简单介绍
  6. @ExceptionHandler
  7. 老歌新唱--使用VB6开发的ActiveX实现.NET程序的混淆加密
  8. LeetCode 1291. 顺次数(模拟)
  9. 茄子快传 java,如何打造茄子快传这样一款Android应用(项目已完成,github)
  10. JAVA的图形性能,慢在哪里之分析
  11. Atitit springcloud的艺术 attilax总结 目录 1.1. 服务治理:Spring Cloud Eureka 39 注册中心 1 1.2. 第4章 客户端负载均衡:Spring
  12. 信号与系统 Matlab 实验 画连续离散系统零极点图 分析连续、离散系统的频率特性 幅频特性曲线 相频特性曲线
  13. 显示计算机无法检测到扫描仪,为何我的电脑检测不到我的扫描仪?
  14. 三、非编码体细胞突变肿瘤基因组学 -- 突变暗物质(Analyses of non-coding somatic drivers in 2,658 cancer whole genomes)
  15. codeforces C. Team
  16. C++课程设计订单信息管理系统
  17. JAVA8新特性的StreamAPI 遇到的问题stream has already been operated upon or closed
  18. 使用Helm在k8s集群上部署以太坊私有链
  19. 51单片机+L298N控制步进电机【T型】加减速
  20. Axure如何填充背景图

热门文章

  1. Innumerable Ancestors 尺取 dfs序 lca
  2. linux下的ppp软件,linux下ppp拨号无线上网(示例代码)
  3. springCloud的注册中心Eureka和Zookeper的区别
  4. 吉林大学计算机学院刘衍衍教授,刘磊-吉林大学计算机科学与技术学院
  5. mysql session大小写_mysql的大小写敏感性
  6. pssh批量执行启动tomcat报错:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
  7. Java线程中wait、await、sleep、yield、join用法总结
  8. 软件概要设计和详细设计的区别
  9. open-capacity-platform 项目启动
  10. 合成孔径成像算法与实现_浅析太赫兹成像技术在消防领域中的应用前景