文章目录

  • 基本框架
  • 构造方法
  • 添加按钮
  • 设置自定义布局

基本框架

我们在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"android:orientation="vertical"><Buttonandroid:text="显示对话框"android:onClick="display"android:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout>

然后在java代码中编写点击事件的响应:

package com.example.myalertdialog;import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.view.View;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void display(View view) {AlertDialog.Builder builder=new AlertDialog.Builder(this);builder.setIcon(R.drawable.ic_baseline_all_inclusive_24).setTitle("对话框").setMessage("Hello").create().show();}
}

构造方法

先声明一个构造器对象builderAlertDialog.Builder builder=new AlertDialog.Builder(this);

之后就可以用该构造器的各种方法设置对话框的属性:
builder.setIcon(int iconId); 添加图标
builder.setMessage(CharSequence message); 添加消息
builder.setTitle(CharSequence title); 添加标题
builder.setView(View view); 设置自定义布局
builder.create(); 创建对话框
builder.show(); 显示对话框

上面的这些函数都是可以链式调用的(详见基本框架),不过由于setXXX是Builder函数,create函数返回Dialog变量,而show是void函数,所以这三类函数的顺序不能交换,setXXX函数的内部顺序可交换。

运行基本框架中的代码就可以得到一个简单的弹出对话框:

添加按钮

常见的对话框一般还有按钮,包含确认、取消等按钮,我们也可以在java代码中设置并声明点击事件:

package com.example.myalertdialog;import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.View;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void display(View view) {AlertDialog.Builder builder=new AlertDialog.Builder(this);builder.setIcon(R.drawable.ic_baseline_all_inclusive_24).setTitle("对话框").setMessage("Hello").setPositiveButton("OK", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {Log.e("ShadyPi","点击确认");}}).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {Log.e("ShadyPi","点击取消");}}).setNeutralButton("middle", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {Log.e("ShadyPi","点击中性");}}).create().show();}
}


点击对应按钮可以看到事件被触发:

这三个按钮可以根据自己的需要进行取舍与设置。

设置自定义布局

layout文件夹中新建资源文件:

随便添加一点ImageView和TextView:

<?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"android:background="@color/purple_500"android:orientation="horizontal"><ImageViewandroid:src="@mipmap/ic_launcher"android:layout_width="wrap_content"android:layout_height="wrap_content"/><TextViewandroid:text="Android"android:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout>

在java代码中利用该资源文件生成一个View:
View dialog_view=getLayoutInflater().inflate(R.layout.dialog_view,null);
之后就可以将对话框的步距设置为该View了:
.setView(dialog_view)

MainActivity.java完整代码:

package com.example.myalertdialog;import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.View;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void display(View view) {View dialog_view=getLayoutInflater().inflate(R.layout.dialog_view,null);AlertDialog.Builder builder=new AlertDialog.Builder(this);builder.setIcon(R.drawable.ic_baseline_all_inclusive_24).setTitle("对话框").setMessage("Hello").setPositiveButton("OK", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {Log.e("ShadyPi","点击确认");}}).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {Log.e("ShadyPi","点击取消");}}).setNeutralButton("middle", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialogInterface, int i) {Log.e("ShadyPi","点击中性");}}).setView(dialog_view).create().show();}
}

Android开发之AlertDialog(实现弹出对话框)相关推荐

  1. android注册弹窗,Android开发之PopupWindow创建弹窗、对话框的方法详解

    本文实例讲述了Android开发之PopupWindow创建弹窗.对话框的方法.分享给大家供大家参考,具体如下: 简介: PopupWindow 可创建类似对话框风格的窗口 效果: 使用方法: 使用P ...

  2. Android开发之AlertDialog设置左右边距的间接办法

    老套路看未设置边距的: 再看下设置边距的 效果非常明显了吧,思路将AlertDialog的背景色设置为透明,然后在xml布局中在外面再套一层空布局,在第二层布局中添加drawable边框就可以了 再看 ...

  3. JS弹出对话框的三种方式

    javascript的三种对话框是通过调用window对象的三个方法alert(),confirm()和prompt()来获得,可以利用这些对话框来完成js的输入和输出,实现与用户能进行交互的js代码 ...

  4. android 弹出对话框时显示键盘

    今天,简单讲讲如何在弹出自定义的对话框时,弹出软键盘. 之前,我讲了如何制作自定义的对话框,现在,如果在弹出对话框时,自动弹出软键盘,将光标直接聚焦到自定义对话框的输入框内,那该怎么做呢? 在网上搜索 ...

  5. android弹出对话框

    最近因为项目需求,要在一个service上面弹出一个菜单,菜单响应select事件,所以花了点时间把android弹出Dialog的各种方式都看了一下. 目前学习到的android有三种方式弹出对话框 ...

  6. AlertDialog弹出对话框

    AlertDialog弹出对话框 以下主要代码: package com.example.alertdialog;import android.app.Activity; import android ...

  7. android 点击图片弹出对话框,android studio怎样弹出对话框--实际案例?

    弹出对话框使用AlertDialogBuilder类构建,再用AlertDialog类具体化.我们假设在屏幕上有一退出程序的按钮,当用户点击该按钮时,弹出对话框询问是否退出程序,用户点击确定时退出程序 ...

  8. android自定义弹出对话框,使用FlyDialog实现自定义Android弹窗对话框

    前言 学习的时候要用到弹窗,但是又觉得i同自带的弹窗样式有点不太美观,搜索资料后发现了FlycoDialog这个开源库,效果很好,而且实现起来也比较方便. 先列举一些比较好看的效果: NormalLi ...

  9. android+底部评论框,Android 之BottomsheetDialogFragment仿抖音评论底部弹出对话框效果(实例代码)...

    实现的效果图: 自定义Fragment继承BottomSheetDialogFragment 重写它的三个方法: onCreateDialog() onCreateView() onStart() 他 ...

最新文章

  1. python实现gauss-seidel迭代公式_python实现高斯(Gauss)迭代法的例子
  2. Ubuntu抛弃了Untiy转向Gnome,美化之路怎么办?不用怕咱一步一步大变身!
  3. java 静态对象语法_04.Java 语法
  4. jieba分词单例模式及linux权限不够情况下tmp_dir自定义
  5. [转]Linux中常见目录简介
  6. 20亿条记录的MySQL大表,我们这样迁移的
  7. ArcGIS 创建格网与图斑数据叠加;频数统计与面积比例计算
  8. 淘淘商城第59讲——搭建Solr集群
  9. Matlab注释多行和取消多行注释的快捷键
  10. 微信图片盗链php,微信公众号图片如何实现反防盗链接
  11. 热风销售不合格凉鞋、外套遭处罚,服装商家经营需诚信
  12. mysql开发收银_农银e管家收银台PC版收款语音播报插件开发实录(二)
  13. SourceTree的简单使用
  14. 计算机电路英语词汇,PCB专业英语词汇对照表(大全)
  15. 学生版计算机怎样能玩数字游戏,数学学习游戏电脑版
  16. ChatGPT微信插件闪退解决办法
  17. linux at24测试程序,AT91RM9200在linux2.6.20下TWI测试程序
  18. [CF891E]Lust
  19. Django集成搜索引擎Elasticserach
  20. Ubuntu 在设置共享文件夹时/mnt下没有hgfs文件夹(vmware-tools)

热门文章

  1. 什么是Microsoft编辑器,以及如何使用它?
  2. 方文山解读《青花瓷》文字修辞
  3. 远程连接SQL Server服务器配置教程
  4. C. Dominated Subarray----------思维
  5. Ganglia 监控
  6. MaskedTextBox总结
  7. Android中添加两个(多个)FileProvider节点问题
  8. 华为交换机配置命令总结
  9. OWASP API SECURITY TOP 10
  10. attrib批量显示文件夹_如何使用DOS命令attrib设置文件或文件夹的属性