Android学习(十九)Dialog对话框

一、什么是Dialog对话框

  对话框是当前页面中弹出的一个小窗口,用于显示重要的提示信息,提示用户输入信息,确认信息,或者显示某种状态,如下载进度,退出提示等等。用户需要与对话框进行交互,才能回到原窗口继续执行。

二、几种常见的对话框

  1、确认对话框。

  2、单选按钮对话框。

  3、多选按钮对话框。

  4、列表对话框。

  5、自定义对话框。

三、Dialog的常用方法

  1、 AlertDialog.Builder中的create()方法,创建一个dialog。

  2、setTitle(),设置标题

  3、setIcon():为对话框设置图标。

  4、setMessage():为对话框设置内容。

  5、setView():为对话框设置自定义样式。

  6、setItems():设置对话框要显示一个list。

  7、setSingleChoiceItems():显示单选按钮列表

  8、setMultiChoiceItems():显示复选按钮列表

  9、setNeutralButton():普通按钮

  10、setPositiveButton():给对话框添加确认按钮。

  11、setNegativeButton():给对话框添加取消按钮。

  

四、示例代码,确认对话框、单选对话框,多选对话框,列表对话框,自定义对话框五种对话框。

main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="对话框代码示例" />

    <Button
        android:id="@+id/btn_dialog1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="确认对话框"/>

    <Button
        android:id="@+id/btn_dialog2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="单选按钮对话框"/>

    <Button
        android:id="@+id/btn_dialog3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="多选按钮对话框"/>

    <Button
        android:id="@+id/btn_dialog4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="列表对话框"/>

    <Button
        android:id="@+id/btn_dialog5"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="自定义对话框"/>

</LinearLayout>

dialog_layout.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">

    <EditText
        android:layout_width="200dp"
        android:layout_height="wrap_content" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="确定" />
</LinearLayout>

后台代码,mai.java

package com.example.zhengcheng.myapplication;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;


public class MainActivity extends Activity {

    Button btn_dialog1;
    Button btn_dialog2;
    Button btn_dialog3;
    Button btn_dialog4;
    Button btn_dialog5;

    String[] item_list1 = new String[]{"男", "女"};  //单选列表数据
    String[] item_list2 = new String[]{"篮球", "乒乓球", "羽毛球", "足球", "游泳"};  //多选列表数据
    boolean[] selected = new boolean[]{false, false, false, false, false};   //多选列表选中状态
    String[] item_list3 = new String[]{"项目部", "设计部", "测试部", "人事部"};  //列表框数据

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //确认对话框
        btn_dialog1 = (Button) findViewById(R.id.btn_dialog1);
        btn_dialog1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //创建一个builder对象,用来设置对话框属性
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

                builder.setTitle("对话框标题");   //设置对话框标题
                builder.setIcon(R.mipmap.ic_launcher);  //设置对话框图标
                builder.setMessage("是否退出");  //设置对话框内容
                //设置对话框确定按钮
                builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "点击了确认按钮", Toast.LENGTH_SHORT).show();
                    }
                });

                //设置对话框取消按钮
                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "点击了取消按钮", Toast.LENGTH_SHORT).show();
                    }
                });
                //创建对话框对象
                AlertDialog dialog = builder.create();
                dialog.show();  //显示对话框
            }
        });

        //单选按钮对话框
        btn_dialog2 = (Button) findViewById(R.id.btn_dialog2);
        btn_dialog2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //创建一个builder对象,用来设置对话框属性
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

                builder.setTitle("选择性别");   //设置对话框标题
                builder.setIcon(R.mipmap.ic_launcher);  //设置对话框图标
                builder.setSingleChoiceItems(item_list1, 0, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        String sex = item_list1[which];
                        Toast.makeText(MainActivity.this, sex, Toast.LENGTH_SHORT).show();
                        dialog.dismiss();  //关闭对话框
                    }
                });

                //创建对话框对象
                AlertDialog dialog = builder.create();
                dialog.show();  //显示对话框
            }
        });


        //复选按钮对话框
        btn_dialog3 = (Button) findViewById(R.id.btn_dialog3);
        btn_dialog3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //创建一个builder对象,用来设置对话框属性
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

                builder.setTitle("选择爱好");   //设置对话框标题
                builder.setIcon(R.mipmap.ic_launcher);  //设置对话框图标

                //设置多选按钮对话框,第一个参数为列表数据,第二各参数为上次选中的数据,为boolean类型数组
                builder.setMultiChoiceItems(item_list2, selected, new DialogInterface.OnMultiChoiceClickListener() {
                    //点击复选框按钮
                    @Override
                    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                        if (isChecked) {
                            //创建数组,记录选中状态
                            selected[which] = isChecked;
                        }
                    }
                });


                builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        String choice = "";
                        for (int i = 0; i < selected.length; i++) {
                            if (selected[i]) {  //根据选中状态获取数组中的值
                                choice += item_list2[i];
                            }
                        }

                        Toast.makeText(MainActivity.this, choice.toString(), Toast.LENGTH_SHORT).show();
                        dialog.dismiss();
                    }
                });

                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                });

                //创建对话框对象
                AlertDialog dialog = builder.create();
                dialog.show();  //显示对话框
            }
        });

        //列表对话框
        btn_dialog4 = (Button) findViewById(R.id.btn_dialog4);
        btn_dialog4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //创建一个builder对象,用来设置对话框属性
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

                builder.setTitle("选择部门");   //设置对话框标题
                builder.setIcon(R.mipmap.ic_launcher);  //设置对话框图标
                builder.setSingleChoiceItems(item_list3, 0, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        String department = item_list3[which];
                        Toast.makeText(MainActivity.this, department, Toast.LENGTH_SHORT).show();
                        dialog.dismiss();  //关闭对话框
                    }
                });

                //创建对话框对象
                AlertDialog dialog = builder.create();
                dialog.show();  //显示对话框
            }
        });

        //自定义对话框
        btn_dialog5 = (Button) findViewById(R.id.btn_dialog5);
        btn_dialog5.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //获取Layout布局
                LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
                View view = inflater.inflate(R.layout.dialog_layout,null);

                //创建一个builder对象,用来设置对话框属性
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

                builder.setTitle("选择部门");   //设置对话框标题
                builder.setIcon(R.mipmap.ic_launcher);  //设置对话框图标
                //设置builder的视图为自定义视图
                builder.setView(view);

                //创建对话框对象
                AlertDialog dialog = builder.create();
                dialog.show();  //显示对话框
            }
        });
    }
}
原文地址:https://www.cnblogs.com/zhengcheng/p/4423535.html