安卓AlertDialog弹窗

安卓AlertDialog弹窗Android 在开发中经常会遇到有弹框的需求 经常使用的有 Dialog 弹框 Window 弹框 任意位置弹出除了外观样式和显示的位置的区别之外 他们之间最本质的区别是 dialog 是非阻塞式对话框 popupwindow 是阻塞式对话框 也就是说 dialog 弹出时后台还可以进行很多的操作 而 popupwindow 弹出是后台进程是阻塞的 要一直等待 popupwindow 消失才会进行操作

Android在开发中经常会遇到有弹框的需求。

经常使用的有Dialog 弹框,Window弹框(任意位置弹出除了外观样式和显示的位置的区别之外,他们之间最本质的区别是: dialog是非阻塞式对话框,popupwindow是阻塞式对话框。也就是说dialog弹出时 后台还可以进行很多的操作,而popupwindow弹出是 后台进程是阻塞的,要一直等待popupwindow 消失 才会进行操作。

),Activity伪弹框

Activity变成一个窗口

 

 

目录

AlertDialog的六种创建方式… 1

创建AlertDialog的步骤:… 1

最常用的AlertDialog. 2

一、setMessage:设置对话框内容为简单文本内容… 4

二、setItem:设置文本框内容为简单列表项… 4

三、setSingleChoiceItems()设置对话框内容为单选列表项     5

四、setMultiChoiceItems()设置对话框内容为多选项列表     6

五、setView ()设置图片内容为对话框项… 7

六、setView()设置对话框为自定义输入框View.. 8

七、ProgressDialog()圆形进度条对话框… 10

 

 

AlertDialog的六种创建方式

创建AlertDialog的步骤:

1、创建AlertDialog.Builder对象

2、调用Builder b有的)对象的setTitle方法设置标题,setIcon方法设置图标

3、调用Builder相关方法如setMessage(显示内容)方法、

setItems 方法、

setSingleChoiceItems方法、(色特行康崔赛腾)

setMultiChoiceItems方法、(色特某疼康崔赛腾)

setAdapter方法、(额达科特)

setView方法设置不同类型的对话框内容。

4、调用setPositiveButton(右边)、

setNegativeButton(中间)()色特兰格提兀巴腾、

setNeutralButton(左边)设置多个按钮(色特刘雀巴腾)

5、调用 方法创建AlertDialog对象

6、调用AlertDialog对象的show()方法将对话框显示出来

 

最常用的AlertDialog.

今天主要是讲他的用法。AlertDialog的用法也很简单

经常用的:

setTitle :为对话框设置标题

 setIcon :为对话框设置图标

 setMessage:为对话框设置内容

 setView : 给对话框设置自定义样式

 setItems :设置对话框要显示的一个list,一般用于显示几个命令时

 setMultiChoiceItems :用来设置对话框显示一系列的复选框

 setSingleChoiceItems :用来设置对话框显示一系列的单选框

 setNeutralButton    :普通按钮

 setPositiveButton   :给对话框添加”Yes”按钮

 setNegativeButton :对话框添加”No”按钮

 create : 创建对话框

 show :显示对话框

 

 

列表框list

单选框Radio

复选框check

图片Picture

输入entry

进度条 progress

安卓AlertDialog弹窗

 

安卓AlertDialog弹窗

涉及到知识点:setMessage设置对话框内容为简单文本内容

context

AlertDialog.Builder alertdialogbuilder = new AlertDialog.Builder(this);
alertdialogbuilder.setMessage(
您确认要退出程序”);
alertdialogbuilder.setPositiveButton(
确定”, null);
alertdialogbuilder.setNeutralButton(
取消”, null);
final AlertDialog alertdialog1 = alertdialogbuilder.create();
alertdialog1.show();

二、setItem:设置文本框内容为简单列表项

安卓AlertDialog弹窗

核心代码:

builder = new AlertDialog.Builder(this); builder.setTitle("列表框")         .setItems(new String[]{ 
  "列表项1", "列表项2", "列表项3"}, null)         .setNegativeButton("确定", null); builder.create().show();

三、setSingleChoiceItems()设置对话框内容为单选列表项

安卓AlertDialog弹窗

核心代码:

final String[] item = new String[]{ 
  "选项1", "选项2", "选项3", "选项4"}; android.app.AlertDialog alertDialog = new android.app.AlertDialog.Builder(this)         .setTitle("请选择")//默认为0表示选中第一个项目         .setSingleChoiceItems(item, 0, new DialogInterface.OnClickListener() {             @Override             public void onClick(DialogInterface dialog, int which) {                 Toast.makeText(MainActivity.this, "你单选了" + item[which], Toast.LENGTH_LONG).show();             }         })         .setPositiveButton("确认", new DialogInterface.OnClickListener() {             @Override             public void onClick(DialogInterface dialog, int which) {             }         })         .setNegativeButton("取消", null)         .create(); alertDialog.show();

四、setMultiChoiceItems()设置对话框内容为多选项列表


核心代码:
// 创建数据 final String[] items = new String[]{ 
  "我是Item一", "我是Item二", "我是Item三", "我是Item四"}; // 创建对话框构建器 builder = new AlertDialog.Builder(this); builder.setIcon(R.drawable.ic_launcher_background)         .setTitle("提示")         .setMultiChoiceItems(items, //选项条                 new boolean[]{ 
  true, true, false, false, false},// //这个參数必须是boolean[]的,不能使Boolean[]的,有几个item就数组长度几个,true为勾选,false则相反                 new DialogInterface.OnMultiChoiceClickListener() {                     @Override                     public void onClick(DialogInterface dialog,                                         int which, boolean isChecked) {                         // TODO Auto-generated method stub                         if (isChecked) {                             Toast.makeText(MainActivity.this,                                     items[which], Toast.LENGTH_SHORT).show();                         }                     }                 }); builder.create().show();

五、setView ()设置图片内容为对话框项


核心代码:
ImageView img = new ImageView(this); img.setImageResource(R.mipmap.timg); builder = new AlertDialog.Builder(this); builder.setTitle("图片框")         .setView(img)         .show();
  
//—————升级添加按钮事件——————
ImageView img = new ImageView(this);     img.setImageResource(R.mipmap.timg);     builder = new AlertDialog.Builder(this);     builder.setTitle("认识它吗?")             .setView(img).setPositiveButton("知道", new DialogInterface.OnClickListener() {     @Override     public void onClick(DialogInterface dialog, int which) {         Toast.makeText(MainActivity.this,"哎呦,不错哦",Toast.LENGTH_SHORT).show();     } }).setNegativeButton("不知道", new DialogInterface.OnClickListener() {     @Override     public void onClick(DialogInterface dialog, int which) {         Toast.makeText(MainActivity.this,"一点也不老实",Toast.LENGTH_SHORT).show();     } }).setNeutralButton("谁呀", new DialogInterface.OnClickListener() {     @Override     public void onClick(DialogInterface dialog, int which) {         Toast.makeText(MainActivity.this,"快睁开眼瞅瞅",Toast.LENGTH_SHORT).show();     } });           builder.create() .show();

六、setView()设置对话框为自定义输入框View

安卓AlertDialog弹窗

核心代码点击事件写:
builder = new AlertDialog.Builder(this); // 获取布局 View view2 = View.inflate(MainActivity.this, R.layout.login, null); // 获取布局中的控件 final EditText username = (EditText) view2.findViewById(R.id.username); final EditText password = (EditText) view2.findViewById(R.id.password); final Button btn = (Button) view2.findViewById(R.id.btn_login); // 设置参数 builder.setTitle("Login").setIcon(R.drawable.ic_launcher_background).setView(view2); // 创建对话框 builder.create().show(); btn.setOnClickListener(new View.OnClickListener() {     @Override     public void onClick(View v) {         // TODO Auto-generated method stub         String uname = username.getText().toString().trim();         String psd = password.getText().toString().trim();         if (uname.equals("123") && psd.equals("123")) {             Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();         }         Toast.makeText(MainActivity.this, "登录失败", Toast.LENGTH_SHORT).show();     } });
LinearLayout还需要一个login.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”
   
android:gravity=“center”>
    <
LinearLayout
       
android:layout_width=“wrap_content”
       
android:layout_height=“wrap_content”
       
android:orientation=“horizontal”>
        <
TextView
           
android:layout_width=“wrap_content”
           
android:layout_height=“wrap_content”
           
android:text=姓名”
           
android:id=“@+id/tv_name”/>
        <
EditText
           
android:layout_width=“200dp”
           
android:layout_height=“wrap_content”
           
android:id=“@+id/username”
           
/>
   
LinearLayout>
    <
LinearLayout
       
android:layout_width=“wrap_content”
       
android:layout_height=“wrap_content”
       
android:orientation=“horizontal”>
        <
TextView
           
android:layout_width=“wrap_content”
           
android:layout_height=“wrap_content”
           
android:text=姓名”
            
android:id=“@+id/tv_pwd”/>
        <
EditText
           
android:layout_width=“200dp”
           
android:layout_height=“wrap_content”
           
android:id=“@+id/password”
           
/>
   
LinearLayout>
    <
Button
       
android:layout_width=“wrap_content”
       
android:layout_height=“wrap_content”
       
android:text=“Login”
       
android:id=“@+id/btn_login”/>

LinearLayout>



  

 

七、ProgressDialog()圆形进度条对话框

安卓AlertDialog弹窗

                //ProgressDialog.STYLE_SPINNER 环形精度条

                //ProgressDialog.STYLE_HORIZONTAL 水平样式的进度条

ProgressDialog:可以在当前界面弹出一个置顶于所有界面元素的对话框,同样具有屏蔽其他控件的交互能力,用于提示用户当前操作正在运行,让用户等待。

设置可否使用back键返回,这里设置若是为progressDialog.setCancelable(flase),则要在数据加载完成后调用ProgressDialogdismiss()来关闭对话框;

ProgressDialog dialog = new ProgressDialog(this); //1.创建一个ProgressDialog的实例  dialog.setMessage("正在加载中"); dialog.show();//5.ProgessDialog显示出来
  

感兴趣同学可以思考:如何做出这种效果:(过时了)

 

安卓AlertDialog弹窗

//参考核心代码:

final ProgressDialog dialog = new ProgressDialog(this);

        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

        dialog.setMessage(“正在加载中”);

        dialog.setMax(100);

        final Timer timer = new Timer();

        timer.schedule(new TimerTask() {

            int progress = 0;

 

            @Override

            public void run() {

                dialog.setProgress(progress += 5);

                if (progress == 100) {

                    timer.cancel();

                }

            }

        }, 0, 1000);

        dialog.show();

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/207300.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午2:07
下一篇 2026年3月19日 下午2:07


相关推荐

  • 2021.4.1 版激活码_通用破解码

    2021.4.1 版激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    51
  • history.back(-1)和history.go(-1)的区别

    history.back(-1)和history.go(-1)的区别转载自:http://www.uw3c.com/jsviews/js96.html目录:1这个方法的用途2两个方法的区别3总结1这个方法的用途2两个方法的区别3总结概述:H5页面做多

    2022年7月4日
    24
  • 主成分分析与因子分析及SPSS实现[通俗易懂]

    主成分分析与因子分析及SPSS实现[通俗易懂]主成分分析与因子分析及SPSS实现一、主成分分析(1)问题提出在问题研究中,为了不遗漏和准确起见,往往会面面俱到,取得大量的指标来进行分析。比如为了研究某种疾病的影响因素,我们可能会收集患者的人口学资料、病史、体征、化验检查等等数十项指标。如果将这些指标直接纳入多元统计分析,不仅会使模型变得复杂不稳定,而且还有可能因为变量之间的多重共线性引起较大的误差。有没有一种办法能对信息进行浓缩,减少变量的个…

    2022年5月17日
    49
  • ubuntu20.04安装opencv_ubuntu opencv安装

    ubuntu20.04安装opencv_ubuntu opencv安装更新源 sudo apt update 安装相关包 sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libjasper 报错:无法定位到 libj…

    2022年8月18日
    9
  • S3DIS数据集学习笔记

    S3DIS数据集学习笔记S3DIS 是一个大型的 3d 室内数据集 关于它的介绍网上很多了 它主要是由 xyz rgb 法向量 9 个特征和一个标签组成的 长度为 10 的向量 由于这个数据集比较大 不利于训练 PointNet 训练之前会将它进行预处理 划分为 1mx1m 的区域 然后再放入网络进行训练 下面是关于它的代码分析 这个数据集运行的前提是 你已经按照 PointNet 的 readme 运行了 collect indor3d data 将 txt 文件转换为了 npy 文件 classS3DISDa Dataset

    2026年3月26日
    1
  • mysql左连接丢失null值的问题

    mysql左连接丢失null值的问题一、前言      如题所示,我们有的时候直接使用左连接查询,当右表不存在该数据的时候,是可以查出带有null的列。可是当在where条件中有右表相关的筛选条件时,我们惊奇的发现查询的结果不带null值了,换句话说就是查出来的结果比预期的少。      博主之前遇到过这个问题…

    2022年5月6日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号