Android AlertDialog 实现对话框 警告对话框、列表对话框、自定义对话框
AlertDialog【警告对话框】:
图1:
图2:
图3:
activity_main.xml :
<?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"tools:context=".MainActivity"><Buttonandroid:id="@+id/btn_AlertDialog"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="70dp"android:layout_gravity="center"android:onClick="showAD"android:text="一般的对话框"/></LinearLayout>
MainActivity.java :
public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void showAD(View v){new AlertDialog.Builder(this).setTitle("删除数据") //设置标题.setMessage("你确定删除数据吗?") //设置内容.setPositiveButton("删除", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this,"删除数据",Toast.LENGTH_LONG).show();}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this,"取消删除",Toast.LENGTH_LONG).show();}}).show(); // 方法链调用}}
点击运行即可。
AlertDialog 的常用 API:
show(): 显示对话框
AlertDialog.Builder :
create(): 创建 AlertDialog 对象
show(): 创建 AlertDialog 对象,同时将其显示出来
setTitle(): 设置标题
setMessage(): 设置内容
setPositiveButton():设置正面按钮
setNegativeButton():设置负面按钮
dismiss():移除 dialog
setSingleChoiceltems(…)设置单选项列表
—————————————————————————————————————
AlertDialog【列表对话框】:
图1:
图2:
activity_main.xml :
<?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"tools:context=".MainActivity"><Buttonandroid:id="@+id/btn_AlertDialog"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="70dp"android:layout_gravity="center"android:onClick="showWW"android:text="列表对话框"/></LinearLayout>
MainActivity.java :
public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void showWW(View v){final String[] items = {"红","蓝","绿","灰"}; // final的变量在方法执行完后还存在new AlertDialog.Builder(this).setTitle("指定背景颜色").setSingleChoiceItems(items, 2, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) { // which就是选中的position// 提示颜色Toast.makeText(MainActivity.this,items[which],Toast.LENGTH_LONG).show();// 移除dilaogdialog.dismiss();}}).show();}}
总结:
* 重点:* 1.* 问题: 为什么我们可以直接利用接口类型参数来移除对话框?** 分析: 注意观察在onClick 中第一个参数是一个 DialogInterface 接口类型的参数,那么为什么我们能直接利用这个参数移除掉AlertDialog* 因为,当列表对话框弹出后,这个方法就会传来 接口所对应的实现方法,那么这个对应的实现方法就是 AlertDialog ,所以可以利用其作为参数* 进行移除对话框 —— 原理: 多态** ——————————————————————————————————————————————————————————————————————** 2.* 问题: 为什么这里的 items 必须要是 final ,否则就会报错?** 分析: 因为如果 items 不是 final 类型,那么它就是一个局部变量,局部变量在方法执行完成后,就会从内存中释放,那么当我们再次* 点开这个列表对话框,想重新选择的时候,这个变量没了,还怎么读取的到数据呢?是不是呐!* 所以,我们要设成 final 类型,目的就是 为了让其变量还能保留在内存中!*
AlertDialog【自定义对话框】:
图1:
图2:
图3:
activity_main.xml:
<Buttonandroid:id="@+id/btn_zidingyi"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="70dp"android:layout_gravity="center"android:onClick="showCD"android:text="自定义对话框"/>
dialog_view.xml , 专门编写对话框的样式布局
<?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"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:id="@+id/img_imageView"android:layout_width="match_parent"android:layout_height="wrap_content"app:srcCompat="@drawable/ic_view"android:scaleType="fitXY"/><!--scaleType 整个图片填充满上下--><EditTextandroid:id="@+id/edt_username"android:layout_width="match_parent"android:layout_height="wrap_content"android:inputType="textPersonName"android:hint="用户名"android:gravity="center"/><EditTextandroid:id="@+id/edt_password"android:layout_width="match_parent"android:layout_height="wrap_content"android:inputType="textPassword"android:hint="密码"android:gravity="center"/></LinearLayout>
MainActivity.java
public void showCD(View v){// 动态加载布局文件,得到对应的 View 对象View view = View.inflate(this,R.layout.dialog_view,null);// 问题1: view的真是类型? 是布局文件根标签的类型,包含了子 View 对象// 问题2: 如何得到一个独立 View 的 子View ? view.findViewById(id)// findViewById(id)是在 setContentView() 中的 View 中找,所以说我们在 MainActivity里,可以直接 findViewById 来获得到该组件// 就是因为MainActivity 最开始就已经加载了布局 setContentView(R.layout.activity_main)。final EditText edtName = view.findViewById(R.id.edt_username);final EditText edtPwd = view.findViewById(R.id.edt_password);new AlertDialog.Builder(this).setView(view).setNegativeButton("取消",null).setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// 读取用户名和密码String username = edtName.getText().toString();String password = edtPwd.getText().toString();// 提示Toast.makeText(MainActivity.this,"用户名:" + username + "\n密码"+password,Toast.LENGTH_LONG).show();}}).show();}
Android AlertDialog 实现对话框 警告对话框、列表对话框、自定义对话框相关推荐
- Android开发笔记(六十六)自定义对话框
AlertDialog Android中最常用的对话框是AlertDialog,它可以完成常见的交互操作,如提示.确认.选择等等,然后就是进度对话框ProgressDialog(参见< Andr ...
- python创建对话框_Python使用tkinter打造自定义对话框完整代码
问题来源:前一阵发过一个技术文章Python编写抽奖式随机提问程序,其中有个弹出式对话框,好像上海科技大学宋老师在群里当时问了一句对话框中中奖姓名是否能显示的大一些,如图: 当时记得标准的tkinte ...
- Android之使用AlertDialog.Builder类创建带列表的对话框和带自己所布局视图的对话框
1.首先,新建一个安卓项目,项目名称为DialogTest1,首先,进行界面布局,打开布局文件res下的layout文件夹下的activity_main.xml文件,附上activity_main的代 ...
- Android开发2:事件处理及实现简单的对话框(Toast,AlertDialog,Snackbar,TextInputLayout的使用)...
前言 啦啦啦~又要和大家一起学习Android开发啦,博主心里好激动哒~ 在上篇博文中,我们通过线性布局和基础组件的使用,完成了一个简单的学生课外体育积分电子认证系统的界面,本篇博文,将和大家一起熟悉 ...
- Android AlertDialog 对话框开启和关闭输入法问题
Android AlertDialog 对话框开启和关闭输入法问题 AlertDialog 对话框是android jar包自带的对话框,说实话 真的很丑,黑白相间,不是很推荐使用.大多时候 特别是项 ...
- 一对一视频聊天软件源码,Android AlertDialog 对话框
一对一视频聊天软件源码,Android AlertDialog 对话框实现的相关代码 button = (Button) findViewById(R.id.button_alertDialog);b ...
- Android AlertDialog对话框自定义风格的另类实现
一.引子 学过Android的同学都知道,对话框的重要程度非常高,任何一款 app几乎都离不开对话框,值得庆幸的是,对话框的运用在Android中还是相对比较容易的.虽然很简单,但我在项目中还是碰到些 ...
- 如何在android中创建自定义对话框?
本文翻译自:How to create a Custom Dialog box in android? I want to create a custom dialog box like below ...
- AlertDialog和自定义对话框
***AlertDialog *常用方法: setTitle():设置对话框的标题 setIcon():设置对话框图标 setMessage():设置对话框要传达的具体信息 setCancelable ...
- android 之Dialog的多种Dialog对话框(以及反射在自定义对话框的运用)
实际效果: 实例代码: 一个"启动初始Activity.xml" 一个弹出的Activity 业务逻辑代码: package com.hsj.example.alertdialog ...
最新文章
- Tcpdump命令的使用与示例——linux下的网络分析
- 检测不到信号,是加点噪声?还是滤除噪声?
- thinkcmf搭建教程_5分钟快速入门
- Jmeter使用流程及简单分析监控
- c语言本身有输入输出语句正确错误,C语言模拟选择题
- java面试宝典2019_Java面试宝典2019完整版.doc
- ES6新特性_ES6中Map的介绍与API---JavaScript_ECMAScript_ES6-ES11新特性工作笔记032
- UVA10735 Euler Circuit题解
- ASP.NET的七个内置对象
- Java构建指定大小文件
- SqlServer根据表中ID加序号
- linux 进程killed_linux下运行Gaussian09进程被killed
- 唯唯码 - ios/android的app下载地址合并为一个二维码
- jpg转pdf怎么转换?
- 云南大学02届计算机系,云南大学学生获得2019CCF大学生计算机系统与程序设计竞赛西...
- linux无字幕打开文件,解决SMPLAYER无画面/无字幕
- WIN系统仿MAC任务栏工具分享——RocketDock
- C语言:野指针成因。
- 抖音流量密码时间段,一天中这个时候发推荐几率大
- 大型剪纸艺术——美到惊奇
热门文章
- Android开发4: Notification编程基础、Broadcast的使用及其静态注册、动态注册方式...
- JAVA学习IO(1)
- Spring事务-1
- PuTTY 'modmul()' 函数缓冲区下溢漏洞(CVE-2013-4206)
- Surprise 使用本地数据
- 「知识蒸馏」最新2022研究综述
- 对自己深度学习方向的论文有idea,可是工程实践能力跟不上,实验搞不定怎么办?...
- AI顶会论文“趋势”:对新方法的过度关注,与现实问题的脱节
- 我读研期间通过实习和比赛收入五十万
- 普通人快速拿到校招offer的十大狠招