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);         @Override         public 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"?>
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();

 }

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

                                                                                                  

更多相关文章

  1. Android 仿淘宝选中商品不同尺寸的按钮组(二)
  2. 【Android】利用Java代码布局,按钮添加点击事件
  3. 关于webservice服务器接收不到Android传递过来的参数的问题
  4. Android 如何动态设置View参数,LayoutParams.addRules详解,TypedVa
  5. 获取Android设备常规参数信息(SN,IMEI)及定制信息
  6. Android 自定义Button按钮显示样式(正常、按下、获取焦点)
  7. 转载--Android 开发 调用图库选择图片实现和参数详解
  8. android 开关按钮

随机推荐

  1. 深入理解:Android(安卓)编译系统
  2. Android下使用dlopen函数动态调用.so链接
  3. Android(安卓)Studio 中遇到的Gradle bui
  4. Android架构组件简介
  5. Android多进程app中Application回调onCre
  6. Android高手进阶教程(二十三)之---Androi
  7. Android(安卓)Button及TextView动态变换
  8. Android(安卓)调用.Net WCF服务
  9. Android(安卓)的消息机制(Handler消息传递
  10. 关于Android的一些设计