Dialog 对话框在Android是一种极为常见的交互方式,常在需要较弹出重要的信息的提示,或需要用户进行简单交互的时候使用

Android中的对话框形式大致可分为五种:分别是一般对话框形式,列表对话框形式,单选按钮对话框,多选按钮对话框,自定义对话框。现在几乎所有的手机的应用都有对话框,主要用于选择或是退出,系统也为我们封装了对话框,但本人认为系统自带的比较难看,所有都用自定义的对话框。

一、首先,我们先介绍一下系统的一般对话框形式。

在创建Dialog的时候,首先需要使用Builder类来设置Dialog的各种属性
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

方法 描述 示例
setTitle(CharSequence title) 设置布局 builder.setTitle(“Title”)
setMessage(CharSequence
message)
设置内容 builder.setMessage(“内容”)
setView(View view) 设置内容布局 builder.setView(view);
setItems(CharSequence[] items,
final OnClickListener listener)
设置对话框要
显示的一个 list
builder.setItems(new String[]
{“a”,”b”},null);
setMultiChoiceI
tems
设置对话框显示一些列
复选框
第一个参数是各个选项
第二个参数是默认状态
第三个参数是选中监听
builder.setMultiChoi
ceItems(new String[]
{"a","b"},
new boolean[]
{true,true},null);
setNeutralButton 普通按钮 builder.setPositiveButto
n("

设置完成后调用 builder.show()方法即可显示对话框

private void showMyDialog() {
   //通过AlertDialog.Builder这个类来实例化我们的一个AlertDialog的对象,可以对Dialog的各个参数进行设置AlertDialog.Builder builder = new AlertDialog.Builder(this);
//设置Title的标题builder.setTitle("MainActivity");
//设置Title的图标
    builder.setIcon(R.mipmap.ic_launcher);
//设置来显示主要的信息
    builder.setMessage("欢迎来到MainActivity");
//设置一个PositiveButton,积极按钮通常放“确定”,第二个参数是:点击事件builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Override
        public void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, "positive: " + which,Toast.LENGTH_SHORT).show();}});
//设置一个NegativeButton,消极按钮通常放“取消”,第二个参数是:点击事件builder.setNegativeButton("取消",new DialogInterface.OnClickListener(){
    
   @Override
        public void onClick(DialogInterface dialog, int which) {
    Toast.makeText(MainActivity.this, "negative: " + which,Toast.LENGTH_SHORT).show(); }});//设置一个NeutralButton,普通按钮通常放“取消”,第二个参数是:点击事件builder.setNeutralButton("忽略", new DialogInterface.OnClickListener() {
      @Override
        public void onClick(DialogInterface dialog, int which) {
    Toast.makeText(MainActivity.this, "neutral: " + which,Toast.LENGTH_SHORT).show();  }   }); //通过调用show方法,来显示出该对话框
   builder.show();
}

二、列表对话框形式

private void showNameDialog() {AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("选择一个人物");
    //指定下拉列表的显示数据final String[] characters = {"鸣人", "小樱", "佐助", "大蛇丸", "小李"};    //设置一个下拉的列表选择项
    builder.setItems(characters , new DialogInterface.OnClickListener(){        @Override        public void onClick(DialogInterface dialog, int which){           Toast.makeText(MainActivity.this, "选择的人物是:" + characters[which], Toast.LENGTH_SHORT).show();        }});    builder.show();
}

三、单选按钮对话框

private void showMyDialog() {
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

   builder.setIcon(R.mipmap.ic_launcher);
      builder.setTitle("选择性别");

final String[] sex = {"男", "女"};
                //设置一个单项选择下拉框, 第一个参数指定我们要显示的一组下拉单选框的数据集合,第二个参数代表索引,指定默认哪一个单选框被勾选上,0位置就默认是选男(数组的下标默认从0开始),第三个参数给每一个单选项绑定一个监听
                builder.setSingleChoiceItems(sex, 0, new DialogInterface.OnClickListener()
                {
                    @Override
                    public void onClick(DialogInterface dialog, int which)
                    {
                        Toast.makeText(MainActivity.this, "您选择的性别为:" + sex[which], Toast.LENGTH_SHORT).show();
                    }
                });
                builder.setPositiveButton("确定", null);
                builder.setNegativeButton("取消",null);
                builder.show();
        }

四、多选按钮对话框


private void showMyDialog() {       
   AlertDialog.Builder builder = new  AlertDialog.Builder(MainActivity.this);                      builder.setIcon(R.mipmap.ic_launcher);                      builder.setTitle("爱好");
         final String[] hobbies = {"篮球", "足球", "网球", "乒乓球"};                
   // 设置一个单项选择下拉框 
        //第一个参数指定我们要显示的一组下拉多选框的数据集合,
   //第二个参数代表哪几个选项被选择,如果是null,则表示一个都不选择,如果希望指定哪一个多选选项框被选择,需要传递一个boolean[]数组进去,其长度要和第一个参数的长度相同,例如第一个和第四个的状态是被选中的,则{true, false, false, true};
 //第三个参数给每一个多选项绑定一个监听器
   builder.setMultiChoiceItems(hobbies, null, new  DialogInterface.OnMultiChoiceClickListener(){StringBuffer str = new StringBuffer(100);@Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked){if(isChecked){str.append(hobbies[which] + ", ");}Toast.makeText(MainActivity.this, "爱好为:" + str.toString(), Toast.LENGTH_SHORT).show();}});builder.setPositiveButton("确定",null);builder.setNegativeButton("取消", null);builder.show();}

五、自定义的Dialog

mydialog.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinraLayout
xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"
    android:orientation="vertical"> 
       <EditText         
  android:id="@+id/username"                  android:layout_width="match_parent"                  android:layout_height="wrap_content"                        android:hint="username"/>        
<EditText        
   android:id="@+id/password"                  android:layout_width="match_parent"              android:layout_height="wrap_content"                 android:hint="password"/>
</LinraLayout>

private void showMyDialog(){

      AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setIcon(R.mipmap.ic_launcher);

builder.setTitle("请输入用户名和密码");

//    通过LayoutInflater来加载一个xml的布局文件作为一个View对象

View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.mydialog, null);

//    设置我们自己定义的布局文件作为弹出框的Content                builder.setView(view);

final EditText username = (EditText)view.findViewById(R.id.username);               final EditText password = (EditText)view.findViewById(R.id.password);                              builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {                             @Override

public void onClick(DialogInterface dialog, int which) {

String name = username.getText().toString();

String password = password.getText().toString();

//    将输入的用户名和密码打印出来                        Toast.makeText(MainActivity.this, "用户名: " + name + ", 密码: " + password, Toast.LENGTH_SHORT).show();

}

});

builder.setNegativeButton("取消", null);

builder.show();

}

本人菜鸟一个,有什么不对的地方还望大家指出,大神勿喷!

Android中的diglog对话框相关推荐

  1. 如何在android中创建自定义对话框?

    本文翻译自:How to create a Custom Dialog box in android? I want to create a custom dialog box like below ...

  2. android 设置对话框的高度,如何控制Android中默认警报对话框的宽度和高度?

    如何控制Android中默认警报对话框的宽度和高度?AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTi ...

  3. android 显示进度,progressdialog-如何在Android中显示进度对话框?

    progressdialog-如何在Android中显示进度对话框? 当我单击"登录"按钮时,我想显示ProgressDialog,这需要时间才能移动到另一个页面. 我怎样才能做到 ...

  4. (20120731)Android中的各种对话框总结(dialog)

    android中的对话框形式大致分为四种,分别是一般对话框形式,列表对话框形式,单选对话框形式,多选对话框形式 另外一种是登录对话框形式 下面一一对这几种对话框进行详细的讲解 1.一般对话框 butt ...

  5. android 单选框 icon,Android中的普通对话框、单选对话框、多选对话框、带Icon的对话框、以及自定义Adapter和自定义View对话框详解...

    标签: 对话框就是一个AlertDialog,但是一个简单的AlertDialog,我们却可以将它玩出许多花样来,下面我们就来一起总结一下AlertDialog的用法.看看各位童鞋在平时的工作中否都用 ...

  6. appium java 点击事件_java – 无法使用Appium在Android中的权限对话框中单击“允许”按钮...

    我无法使用Appium Java在 Android的权限对话框中点击"拒绝"或"允许"按钮.在点击这些按钮之前,是否需要添加任何功能? 以下是代码: Desir ...

  7. java打开输入框,java – 在Android中打开输入对话框

    我想在某个点打开一个输入对话框,我可以在其输入后存储和使用它. 我在互联网上找到的所有例子都非常先进,我想它们并不像我想要的那样简单 – 我只需要类似于Java的东西: String name = J ...

  8. android 类型.this,Android中各种类型对话框的使用

    只有标题和文本内容简单对话框 代码与范例: AlertDialog.Builder dlg; dlg = new AlertDialog.Builder(AlertDialogSample.this) ...

  9. android开发提示对话框,Android中Notification 提示对话框

    Notification,俗称通知,是一种具有全局效果的通知,它展示在屏幕的顶端,首先会表现为一个图标的形式,当用户向下滑动的时候,展示出通知具体的内容. 一.Notification用于状态栏显示通 ...

最新文章

  1. WWDC2014:留给微软的时间不多了!
  2. ob 接oracle10时接不上怎么办?
  3. java dictionary遍历_遍历 Dictionary,你会几种方式?
  4. NVIDIA将全面支持笔记本混合显卡技术
  5. Java1.8接口方法都是抽象_抽象类和接口的区别以及jdk1.8之后接口里面可以实现方法...
  6. OSSIM中主动与被动探测工具(arpwatch+p0f+pads)组合应用
  7. android 退出代码
  8. 最详细的Mysql操作手册(一)
  9. matlab排队模型和排队系统仿真
  10. python统计群聊话痨、活跃日期和活跃时段
  11. Navicat 15.0.27 激活时弹出No All Pattern Found File Already Patched?(已解决)
  12. 获取mp3部分信息的python代码
  13. SQL Server Always Encrypted
  14. dcos master挂掉后 slave上面的container会咋样
  15. Java线程的6种状态(NEW,RUNNABLE,BLOCKED,WAITING,TINED_WATING,TEMINATE)
  16. Lumion 11.0:领先的建筑可视化工具再次升级!+全版本安装包
  17. 5款靠谱的安卓备份应用
  18. (一)数据后端之逻辑综合
  19. 【评测】】Lonza双胶囊、微粒剂型产品
  20. 光遇安卓服务器维护哪天,光遇安卓版什么时候上线 光遇全平台公测具体开服时间...

热门文章

  1. 黄宏生的轨迹有乔布斯和玛莎的影子
  2. kotlin 构建对象_使用Kotlin,TypeScript和Okta构建安全的Notes应用程序
  3. Ubuntu 双显示器修改登录背景
  4. 怎么配置网站静态为tink php,ThinkPHP 伪静态配置
  5. Docker基础使用
  6. 關於《生化兵器》這個老遊戲的安裝
  7. PS、AE、PR、CAD、SPSS、3D Max、Maya、Office 等常用软件插件合集
  8. 用正交法设计测试用例
  9. 发现了一个智力题库、面试题库网站 http://fayaa.com/tiku/
  10. window安装elasticsearch7.x