Android开发之AlertDialog(实现弹出对话框)
文章目录
- 基本框架
- 构造方法
- 添加按钮
- 设置自定义布局
基本框架
我们在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();}
}
构造方法
先声明一个构造器对象builder
:AlertDialog.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(实现弹出对话框)相关推荐
- android注册弹窗,Android开发之PopupWindow创建弹窗、对话框的方法详解
本文实例讲述了Android开发之PopupWindow创建弹窗.对话框的方法.分享给大家供大家参考,具体如下: 简介: PopupWindow 可创建类似对话框风格的窗口 效果: 使用方法: 使用P ...
- Android开发之AlertDialog设置左右边距的间接办法
老套路看未设置边距的: 再看下设置边距的 效果非常明显了吧,思路将AlertDialog的背景色设置为透明,然后在xml布局中在外面再套一层空布局,在第二层布局中添加drawable边框就可以了 再看 ...
- JS弹出对话框的三种方式
javascript的三种对话框是通过调用window对象的三个方法alert(),confirm()和prompt()来获得,可以利用这些对话框来完成js的输入和输出,实现与用户能进行交互的js代码 ...
- android 弹出对话框时显示键盘
今天,简单讲讲如何在弹出自定义的对话框时,弹出软键盘. 之前,我讲了如何制作自定义的对话框,现在,如果在弹出对话框时,自动弹出软键盘,将光标直接聚焦到自定义对话框的输入框内,那该怎么做呢? 在网上搜索 ...
- android弹出对话框
最近因为项目需求,要在一个service上面弹出一个菜单,菜单响应select事件,所以花了点时间把android弹出Dialog的各种方式都看了一下. 目前学习到的android有三种方式弹出对话框 ...
- AlertDialog弹出对话框
AlertDialog弹出对话框 以下主要代码: package com.example.alertdialog;import android.app.Activity; import android ...
- android 点击图片弹出对话框,android studio怎样弹出对话框--实际案例?
弹出对话框使用AlertDialogBuilder类构建,再用AlertDialog类具体化.我们假设在屏幕上有一退出程序的按钮,当用户点击该按钮时,弹出对话框询问是否退出程序,用户点击确定时退出程序 ...
- android自定义弹出对话框,使用FlyDialog实现自定义Android弹窗对话框
前言 学习的时候要用到弹窗,但是又觉得i同自带的弹窗样式有点不太美观,搜索资料后发现了FlycoDialog这个开源库,效果很好,而且实现起来也比较方便. 先列举一些比较好看的效果: NormalLi ...
- android+底部评论框,Android 之BottomsheetDialogFragment仿抖音评论底部弹出对话框效果(实例代码)...
实现的效果图: 自定义Fragment继承BottomSheetDialogFragment 重写它的三个方法: onCreateDialog() onCreateView() onStart() 他 ...
最新文章
- python实现gauss-seidel迭代公式_python实现高斯(Gauss)迭代法的例子
- Ubuntu抛弃了Untiy转向Gnome,美化之路怎么办?不用怕咱一步一步大变身!
- java 静态对象语法_04.Java 语法
- jieba分词单例模式及linux权限不够情况下tmp_dir自定义
- [转]Linux中常见目录简介
- 20亿条记录的MySQL大表,我们这样迁移的
- ArcGIS 创建格网与图斑数据叠加;频数统计与面积比例计算
- 淘淘商城第59讲——搭建Solr集群
- Matlab注释多行和取消多行注释的快捷键
- 微信图片盗链php,微信公众号图片如何实现反防盗链接
- 热风销售不合格凉鞋、外套遭处罚,服装商家经营需诚信
- mysql开发收银_农银e管家收银台PC版收款语音播报插件开发实录(二)
- SourceTree的简单使用
- 计算机电路英语词汇,PCB专业英语词汇对照表(大全)
- 学生版计算机怎样能玩数字游戏,数学学习游戏电脑版
- ChatGPT微信插件闪退解决办法
- linux at24测试程序,AT91RM9200在linux2.6.20下TWI测试程序
- [CF891E]Lust
- Django集成搜索引擎Elasticserach
- Ubuntu 在设置共享文件夹时/mnt下没有hgfs文件夹(vmware-tools)