Android中AlertDialog的使用

article/2025/10/31 12:49:24

Android中AlertDialog的使用

  • 简述
  • 默认样式
  • 单选弹出框
  • 多选弹出框
  • 列表对话框
  • 自定义弹出框
  • 完整代码

简述

        AlertDialog可以在当前的界面上显示一个对话框,这个对话框是置顶于所有界面元素之上的,能够屏蔽掉其他控件的交互能力,因此AlertDialog一般是用于提示一些非常重要的内容或者警告信息。
        对应手机上就是弹出框。通常和单击事件连用。
正常的创建步骤
AlertDialog不需要布局因此不需要再布局文件中定义。
一、构造AlertDialog.Builder对象

AlertDialog.Builder defaultBuilder = new AlertDialog.Builder(MainActivity.this);

二、调用setTitle、setMessage、setIcon等方法构造对话框的标题、信息和图标等内容

        //标题defaultBuilder.setTitle("默认样式");//提示信息defaultBuilder.setMessage("这是什么样式?");

三、调用setPositive/Negative/NeutralButton()方法设置选项

        //正面按钮 第一个参数提示信息 第二个参数实现监听接口defaultBuilder.setPositiveButton("默认样式",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this,"选对了",Toast.LENGTH_SHORT).show();}});

四、显示

defaultBuilder.show();

通常有四种默认样式、单选弹出框、 多选弹出框、列表对话框、自定义弹出框
布局文件
四个按钮对应对应四个弹出类型

<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#FFFFFFFF"android:orientation="vertical"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:text="标题"android:textSize="30sp"android:textColor="#000"android:layout_marginTop="20dp"/><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:text="自定义的AlertDialog"android:textSize="20sp"android:textColor="#000"android:layout_marginTop="20dp"/><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:layout_marginTop="20dp"android:background="#414E5E"/><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><Buttonandroid:id="@+id/btn_cancel"android:layout_width="0dp"android:layout_weight="1"android:text="取消"android:backgroundTint="#F8F3F3"android:textColor="#0781B8"android:textSize="20sp"android:layout_height="wrap_content" /><Viewandroid:layout_width="1dp"android:background="#E4E5E6"android:layout_height="match_parent" /><Buttonandroid:id="@+id/btn_save"android:layout_width="0dp"android:layout_weight="1"android:backgroundTint="#F8F3F3"android:text="保存"android:textColor="#0781B8"android:textSize="20sp"android:layout_height="wrap_content" /></LinearLayout></LinearLayout>

默认样式

 //构造AlertDialog.Builder对象AlertDialog.Builder defaultBuilder = new AlertDialog.Builder(MainActivity.this);//调用setTitle、setMessage、setIcon等方法构造对话框的标题、信息和图标等内容;//标题defaultBuilder.setTitle("默认样式");//提示信息defaultBuilder.setMessage("这是什么样式?");//调用setPositive/Negative/NeutralButton()方法设置选项 有正面按钮、负面按钮、中立按钮;//正面按钮 第一个参数提示信息 第二个参数实现监听接口defaultBuilder.setPositiveButton("默认样式",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this,"选对了",Toast.LENGTH_SHORT).show();}});//负面按钮defaultBuilder.setNegativeButton("多选样式", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this,"选错了",Toast.LENGTH_SHORT).show();}});//中立按钮defaultBuilder.setNeutralButton("我再想想", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this,"那你再想想",Toast.LENGTH_SHORT).show();}});//显示defaultBuilder.show();

效果
在这里插入图片描述

单选弹出框

    //单选public void singleAlertDialog(){final String[] sex = {"男","女"};AlertDialog.Builder singleBuilder = new AlertDialog.Builder(MainActivity.this);singleBuilder.setTitle("请选择性别");//setSingleChoiceItems 单选//只能选中一个  第二个参数是默认选中哪一个singleBuilder.setSingleChoiceItems(sex,0, new DialogInterface.OnClickListener() {//第二个参数代表选中那个下标的返回值@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this,sex[which],Toast.LENGTH_SHORT).show();dialog.dismiss();//关闭对话框}});singleBuilder.show();}

效果
在这里插入图片描述

多选弹出框

//多选public void multipleAlertDialog(){final String[] book = {"从删库到跑路","深入理解计算机系学生秃头的原因","程序员的构造和解释","算法导论论不懂","计算机网络联不通"};boolean[] begin = {false,false,false,false,false};//初始状态为全部不选中ArrayList<String> bookList = new ArrayList<String>();AlertDialog.Builder multipleAlertDialog = new AlertDialog.Builder(MainActivity.this);multipleAlertDialog.setTitle("想要读什么?");//setMultiChoiceItems 多选multipleAlertDialog.setMultiChoiceItems(book, begin, new DialogInterface.OnMultiChoiceClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked) {if(isChecked){bookList.add(book[which]);Toast.makeText(MainActivity.this,"任意选中就true",Toast.LENGTH_SHORT).show();}else {Toast.makeText(MainActivity.this,"任意取消就false",Toast.LENGTH_SHORT).show();bookList.remove(book[which]);}//Toast.makeText(MainActivity.this,book[which],Toast.LENGTH_SHORT).show();}});multipleAlertDialog.setPositiveButton("选好了", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this,bookList.toString(),Toast.LENGTH_SHORT).show();}});multipleAlertDialog.setNeutralButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this,"不准备读一读吗?",Toast.LENGTH_SHORT).show();}});multipleAlertDialog.show();}

在这里插入图片描述

列表对话框

    //列表public void tableAlertDialog(){AlertDialog.Builder tableBuilder = new AlertDialog.Builder(MainActivity.this);final String[] course = {"C++","Java","Go","php","Pyhton"};tableBuilder.setTitle("你喜欢那个语言?");tableBuilder.setItems(course, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this,course[which],Toast.LENGTH_SHORT).show();}});tableBuilder.show();}

效果
在这里插入图片描述

自定义弹出框

本质上就是弹出一个你自己定义的页面
布局alertdialog_custom

<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#FFFFFFFF"android:orientation="vertical"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:text="标题"android:textSize="30sp"android:textColor="#000"android:layout_marginTop="20dp"/><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:text="自定义的AlertDialog"android:textSize="20sp"android:textColor="#000"android:layout_marginTop="20dp"/><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:layout_marginTop="20dp"android:background="#414E5E"/><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"><Buttonandroid:id="@+id/btn_cancel"android:layout_width="0dp"android:layout_weight="1"android:text="取消"android:backgroundTint="#F8F3F3"android:textColor="#0781B8"android:textSize="20sp"android:layout_height="wrap_content" /><Viewandroid:layout_width="1dp"android:background="#E4E5E6"android:layout_height="match_parent" /><Buttonandroid:id="@+id/btn_save"android:layout_width="0dp"android:layout_weight="1"android:backgroundTint="#F8F3F3"android:text="保存"android:textColor="#0781B8"android:textSize="20sp"android:layout_height="wrap_content" /></LinearLayout></LinearLayout>

代码

  //自定义对话框public void customizeAlertDialog(){AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);//先创建AlertDialog对象AlertDialog dialog = builder.create();//初始化viewView dialogView = LayoutInflater.from(MainActivity.this).inflate(R.layout.alertdialog_custom,null);//设置弹出页面 为自定义布局dialog.setView(dialogView);dialog.show();//剩下的当成正常页面操作Button btnCancel,btnSave;btnCancel = dialogView.findViewById(R.id.btn_cancel);btnSave = dialogView.findViewById(R.id.btn_save);btnCancel.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(MainActivity.this,"你选择了取消",Toast.LENGTH_SHORT).show();dialog.dismiss();//关闭对话框}});btnSave.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(MainActivity.this,"你选择了保存",Toast.LENGTH_SHORT).show();dialog.dismiss();}});}

效果
在这里插入图片描述
注意:宽度是固定的 想要修改宽度需要代码设置


dialog.getWindow().setLayout(width,height);

完整代码

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;import java.util.ArrayList;public class MainActivity extends AppCompatActivity {Button mBtnDefault,mBtnSingle,mBtnMultiple,mBtnTable,mBtnCustomize;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//初始化控件mBtnDefault   = findViewById(R.id.btnDefault);mBtnSingle    = findViewById(R.id.btnSingle);mBtnMultiple  = findViewById(R.id.btnMultiple);mBtnTable     = findViewById(R.id.btnTable);mBtnCustomize = findViewById(R.id.btnCustomize);//对应单击事件 按钮比较多可以使用内部类实现监听接口来复用、规范代码//默认mBtnDefault.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {defaultAlertDialog();}});//单选mBtnSingle.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {singleAlertDialog();}});//多选mBtnMultiple.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {multipleAlertDialog();}});//列表mBtnTable.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {tableAlertDialog();}});//自定义对话框mBtnCustomize.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {customizeAlertDialog();}});}//默认public void defaultAlertDialog(){//构造AlertDialog.Builder对象AlertDialog.Builder defaultBuilder = new AlertDialog.Builder(MainActivity.this);//调用setTitle、setMessage、setIcon等方法构造对话框的标题、信息和图标等内容;//标题defaultBuilder.setTitle("默认样式");//提示信息defaultBuilder.setMessage("这是什么样式?");//调用setPositive/Negative/NeutralButton()方法设置选项 有正面按钮、负面按钮、中立按钮;//正面按钮 第一个参数提示信息 第二个参数实现监听接口defaultBuilder.setPositiveButton("默认样式",new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this,"选对了",Toast.LENGTH_SHORT).show();}});//负面按钮defaultBuilder.setNegativeButton("多选样式", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this,"选错了",Toast.LENGTH_SHORT).show();}});//中立按钮defaultBuilder.setNeutralButton("我再想想", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this,"那你再想想",Toast.LENGTH_SHORT).show();}});//显示defaultBuilder.show();}//单选public void singleAlertDialog(){final String[] sex = {"男","女"};AlertDialog.Builder singleBuilder = new AlertDialog.Builder(MainActivity.this);singleBuilder.setTitle("请选择性别");//setSingleChoiceItems 单选//只能选中一个  第二个参数是默认选中哪一个singleBuilder.setSingleChoiceItems(sex,0, new DialogInterface.OnClickListener() {//第二个参数代表选中那个下标的返回值@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this,sex[which],Toast.LENGTH_SHORT).show();dialog.dismiss();//关闭对话框}});singleBuilder.show();}//多选public void multipleAlertDialog(){final String[] book = {"从删库到跑路","深入理解计算机系学生秃头的原因","程序员的构造和解释","算法导论论不懂","计算机网络联不通"};boolean[] begin = {false,false,false,false,false};//初始状态为全部不选中ArrayList<String> bookList = new ArrayList<String>();AlertDialog.Builder multipleAlertDialog = new AlertDialog.Builder(MainActivity.this);multipleAlertDialog.setTitle("想要读什么?");//setMultiChoiceItems 多选multipleAlertDialog.setMultiChoiceItems(book, begin, new DialogInterface.OnMultiChoiceClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked) {if(isChecked){bookList.add(book[which]);Toast.makeText(MainActivity.this,"任意选中就true",Toast.LENGTH_SHORT).show();}else {Toast.makeText(MainActivity.this,"任意取消就false",Toast.LENGTH_SHORT).show();bookList.remove(book[which]);}//Toast.makeText(MainActivity.this,book[which],Toast.LENGTH_SHORT).show();}});multipleAlertDialog.setPositiveButton("选好了", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this,bookList.toString(),Toast.LENGTH_SHORT).show();}});multipleAlertDialog.setNeutralButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this,"不准备读一读吗?",Toast.LENGTH_SHORT).show();}});multipleAlertDialog.show();}//列表public void tableAlertDialog(){AlertDialog.Builder tableBuilder = new AlertDialog.Builder(MainActivity.this);final String[] course = {"C++","Java","Go","php","Pyhton"};tableBuilder.setTitle("你喜欢那个语言?");tableBuilder.setItems(course, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this,course[which],Toast.LENGTH_SHORT).show();}});tableBuilder.show();}//自定义对话框public void customizeAlertDialog(){AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);//先创建AlertDialog对象AlertDialog dialog = builder.create();//初始化viewView dialogView = LayoutInflater.from(MainActivity.this).inflate(R.layout.alertdialog_custom,null);//设置弹出页面 为自定义布局dialog.setView(dialogView);dialog.show();//剩下的当成正常页面操作Button btnCancel,btnSave;btnCancel = dialogView.findViewById(R.id.btn_cancel);btnSave = dialogView.findViewById(R.id.btn_save);btnCancel.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(MainActivity.this,"你选择了取消",Toast.LENGTH_SHORT).show();dialog.dismiss();//关闭对话框}});btnSave.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(MainActivity.this,"你选择了保存",Toast.LENGTH_SHORT).show();dialog.dismiss();}});}}

http://chatgpt.dhexx.cn/article/duHI5Ig2.shtml

相关文章

android-如何关闭AlertDialog.Builder对话框

android-如何关闭AlertDialog.Builder对话框 前言 在实际写代码的时候&#xff0c;AlertDialog.Builder的使用算是比较频繁的&#xff0c;在对AlertDialog.Builder关闭的时候&#xff0c;我们会发现&#xff0c;AlertDialog.Builder对话框没有相对应的finish()或者dismiss()这…

Android 自定义AlertDialog

Android 自定义popuWindow 对于项目需求中&#xff0c;系统的弹出框不能满足我们的需求&#xff0c;就只能通过自定义布局来实现自己相对应的功能&#xff0c;这里总结一篇关于AlertDialog的 具体操作 这里把弹出框封装了一个方法&#xff0c;使用的时候&#xff0c;只需要在…

Android进阶之AlertDialog自定义

AlertDialog的自定义方式有很多种&#xff0c;这里介绍两种。 第一种是比较简单的&#xff0c;只自定义内容。 在AlertDialog使用详解中&#xff0c;非常详细的介绍了以下六种使用方法。 一、简单的AlertDialog&#xff08;只显示一段简单的信息&#xff0c;比如about us&…

Android入门第九篇之AlertDialog

本文来自http://blog.csdn.net/hellogv/ &#xff0c;引用必须注明出处&#xff01; 时隔一年&#xff0c;又要准备做Android的开发了&#xff0c;最近复习和整理一下Android的知识。这次要说的是AlertDialog&#xff0c;这种对话框会经常遇到。AlertDialog跟WIN32开发中的Dial…

对话框AlertDialog的基本使用(新手)

AlertDialog是点击某一组件时&#xff0c;本文用按钮举例&#xff0c;弹出一个对话框&#xff0c;供你选择接下来的操作。 基础用法 首先要给按钮设置点击事件&#xff0c;然后再onClick里构建 AlertDialog.Builder 方法 代码如下&#xff1a; findViewById(R.id.btn).setOn…

Android的 AlertDialog自定义布局与常用布局用法(弹窗)

1.直接上效果图&#xff0c;看看是不是你们想要的效果图 2.主活动MainActivity2的代码如下 import androidx.appcompat.app.AppCompatActivity; import android.annotation.SuppressLint; import android.app.Activity; import android.app.AlertDialog; import android.app…

AlertDialog详解

对话框介绍与示例 对话框在程序中不是必备的&#xff0c;但是用好对话框能对我们编写的应用增色不少。采用对话框可以大大增加应用的友好性。比较常用的背景是&#xff1a;用户登陆、网络正在下载、下载成功或者失败的提示&#xff0c;还有&#xff0c;比如&#xff1a;短信来了…

Android的AlertDialog详解

转自&#xff1a;http://www.2cto.com/kf/201205/131876.html 参考文章&#xff1a;http://www.cnblogs.com/jiezzy/archive/2012/09/20/2694917.html http://blog.csdn.net/lizzy115/article/details/6924416 AlertDialog的构造方法全部是Protected的&#xff0c;所以不能直接…

AndroidStudio中AlertDialog的四种用法

目录 1.默认样式 2.单选弹出框 3.多选弹出框 4.自定义弹出框 补充&#xff01;&#xff01; 1.默认样式 android.support.v7.app.AlertDialog.Builder builder new android.support.v7.app.AlertDialog.Builder(AlertDialogActivity.this); builder.setTitle("请回…

Android之AlertDialog的基础使用

坦白说&#xff0c;AlertDialog我在工作中用得并不多&#xff0c;因为AlertDialog的样式比较固定和呆板&#xff0c;为了和App的整体设计匹配&#xff0c;一般都是使用自定义的Dialog&#xff0c;只有在要求不高时用一下。但是作为Android的基础控件之一&#xff0c;掌握它是十…

安卓AlertDialog弹窗

Android在开发中经常会遇到有弹框的需求。 经常使用的有Dialog 弹框&#xff0c;Window弹框&#xff08;任意位置弹出除了外观样式和显示的位置的区别之外&#xff0c;他们之间最本质的区别是&#xff1a; dialog是非阻塞式对话框&#xff0c;popupwindow是阻塞式对话框。也就…

AlertDialog对话框的简单使用

目录 一、对话框的创建 二、单选的对话框 三、多选的对话框 一、对话框的创建 一般的对话框分为标题、内容、按钮三大部分。 常见的方法&#xff1a; 方法功能setTitle()设置对话框的标题setIcon()设置对话框的图标setMessage()设置对话框的提示信息setPositiveButton()设…

alertDialog使用详解

1、设置标题、内容、图标 2、设置按钮 3、使用列表、单选和多选。适配 4、设定弹窗大小 5、自定义view 6、设置点击周边灰色区域弹窗不消失 7、自定义view圆角消除周边白块 1、设置标题、内容、图标 AlertDialog alertDialog new AlertDialog.Builder(this) .setTit…

AlertDialog6种使用方法

AlertDialog 1.AlertDialog的6种创建模式 1.1setMessage 1&#xff09;Java代码 //1.创建构造器AlertDialog.Builder buildernew AlertDialog.Builder(this);//2.设置参数builder.setTitle("弹窗提示").setIcon(R.mipmap.boy).setMessage("选择你的性别&#xf…

Android的AlertDialog详解(7种方式)

需要注意的两点&#xff1a; 1. 在setIcon时&#xff0c;需要使用setTitle方法&#xff0c;否则icon不会显示 2.如果同时调用setMessage 和 setItems(或者setSingleChoiceItems setMultiChoiceItems)函数会导致dialog没有显示内容 AlertDialog的构造方法全部是Protected的&am…

AlertDialog(对话框)详解

AlertDialog可以在当前的界面上显示一个对话框&#xff0c;这个对话框是置顶于所有界面元素之上的&#xff0c;能够屏蔽掉其他控件的交互能力&#xff0c;因此AlertDialog一般是用于提示一些非常重要的内容或者警告信息。 1.创建AlertDialog 首先&#xff0c;我们来了解一下Al…

andoid小游戏开发

apk下载&#xff1a;apk下载&#xff1a;http://download.csdn.net/detail/xiangqiao123/3805861 这是去年用android写的一个小游戏&#xff0c; 我感觉不错&#xff0c;是从事android小游戏开发入门不错的案例&#xff0c; 今天就把它拿出来和大家共享一下。 程序截图&a…

android 2D 游戏的开发的方法

最近学习了android 2D 应用的开发&#xff0c;拿来和大家分享一下&#xff0c;学习2D 开发前我们先了解一下SurfaceView的使用以及贴图技术的使用&#xff0c;最后呢&#xff0c;是一个简单的2的游戏的实现。 1.SurfaceView的一些用法 提供了一个专门的绘图渲染的图形嵌入在一个…

Android手机游戏开发入门教程

Android手机游戏开发入门教程 视频欣赏地址 来自 “ ITPUB博客 ” &#xff0c;链接&#xff1a;http://blog.itpub.net/29597077/viewspace-1139520/&#xff0c;如需转载&#xff0c;请注明出处&#xff0c;否则将追究法律责任。 转载于:http://blog.itpub.net/29597077/vie…

Android 游戏开发速递

作者 / Greg Hartrell, Head of Product Management, Games on Android & Google Play 在今年 3 月举行的 Google 游戏开发者峰会上&#xff0c;我们分享了 Google 为帮助游戏开发者而持续投入研发的数种新工具和服务。这些新工具和服务能够帮助游戏开发者更轻松地查看其 A…