安卓提供了丰富的对话框支持,它提供了如下4种常用的对话框。

  1. AlertDialog:功能最丰富、实际应用最广泛的对话框。
  2. ProgressDialog:进度对话框,这个对话框只是对进度条的包装。
  3. DataPickerDialog:日期选择对话框,这个对话框只是对DataPicker的包装。
  4. TimePickerDialog:时间选择对话框,这个对话框只是对TimePicker的包装。

其中,功能最强用法最灵活的是AlertDialog,应用广泛,其他的对话框都是其子类。

使用AlertDialog创建对话框

可以生成各种内容的对话框,实际上生成的对话框的结构是一定的,结构如下:

android基本对话框 安卓对话框控件_android

区域分为四个:

图标区,标题区,内容区,按钮区

创建一个对话框大概需要如下几个步骤:

  1. 创建AlertDialog.Builder对象
  2. 调用AlertDialog.Builder的setTitle()或者setCustomTitle()方法设置标题。
  3. 调用AlertDialog.Builder的setIcon()方法设置图标。
  4. 调用AlertDialog.Builder的相关方法设置对话框内容。
  5. 调用AlertDialog.Builder的setPositiveButton()、setNegtiveButton()或setNetralButton()方法添加多个按钮。
  6. 调用AlertDialog.Builder的creat()方法创建AlertDialog对象,再调用AlertDialog对象的show()方法将对话框显示出来。

在上面的6个步骤中,第4步是最灵活的,允许创建各种类型的对话框。归纳起来,AlertDialog提供了如下6种方法来指定对话框的内容。

  1. setMessage():设置对话内容为简单文本。
  2. setItems():设置对话框内容为简单列表项。
  3. setSingleChoiceItems():设置对话框内容为单选列表项。
  4. setMultiChoiceItems():设置对话框内容为多选列表项。
  5. setAdapter():设置对话框内容为自定义列表项。
  6. setView():设置对话框内容为自定义view。

栗子1:

显示提示消息的对话框

android基本对话框 安卓对话框控件_android_02

android基本对话框 安卓对话框控件_单选_03

主要代码:

package com.example.mayn.dialog1;

import android.content.DialogInterface;
import android.icu.util.ValueIterator;
import android.net.Uri;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import java.text.BreakIterator;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button bn=(Button)findViewById(R.id.button);
        //为按钮绑定事件监听器
        bn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                simple(v);
            }
        });
    }

public void simple(View source)
{
    AlertDialog.Builder builder = new AlertDialog.Builder(this)
            .setTitle("简单对话框")
            .setIcon(R.drawable.ic_launcher_background)
            .setMessage("对话框的测试内容\n第二行内容");
    setPositiveButton(builder);
    setNegativeButton(builder)
            .create()
            .show();
}

private AlertDialog.Builder setPositiveButton(
        AlertDialog.Builder builder) {

        //调用setPositiveButton方法添加“确定”按钮
    return builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {

        }
    });
}
    private AlertDialog.Builder setNegativeButton(
            AlertDialog.Builder builder) {

        return builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
            private BreakIterator show;

            @Override
            public void onClick(DialogInterface dialog, int which) {

            }
        });
    }
}

栗子2:

简单列表项对话框

调用AlertDialog.Builder的setItems()方法即可设置简单列表项对话框,调用该方法时需要传入一个数组或数组资源的资源ID。

下面用setItems()来设置简单列表项对话框

android基本对话框 安卓对话框控件_单选_04

android基本对话框 安卓对话框控件_android基本对话框_05

android基本对话框 安卓对话框控件_单选_06

主要代码:

package com.example.mayn.dialog2;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import java.text.BreakIterator;

public class MainActivity extends AppCompatActivity {

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


                //第一个按钮
                Button bn = (Button) findViewById(R.id.button);
                //为按钮绑定事件监听器
                bn.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        simple(v);
                    }
                });

                //第二个按钮
                Button bn2 = (Button) findViewById(R.id.button2);
                //为按钮绑定事件监听器
                bn2.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        simpleList(v);
                    }
                });


            }

            public void simple(View source) {
                AlertDialog.Builder builder = new AlertDialog.Builder(this).setTitle("简单对话框").setIcon(R.drawable.ic_launcher_background).setMessage("对话框的测试内容\n第二行内容");
                setPositiveButton(builder);
                setNegativeButton(builder).create().show();
            }

            private AlertDialog.Builder setPositiveButton(AlertDialog.Builder builder) {

                //调用setPositiveButton方法添加“确定”按钮
                return builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                    }
                });
            }

            private AlertDialog.Builder setNegativeButton(AlertDialog.Builder builder) {

                return builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    private BreakIterator show;

                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                    }
                });
            }

            String[] items = new String[]{"疯狂安卓讲义", "疯狂Ajax讲义"};
            /*
             * 简单列表项对话框
             */
            public void simpleList(View source) {
                AlertDialog.Builder builder = new AlertDialog.Builder(this)
                        //设置对话框标题
                        .setTitle("简单列表对话框")
                        //设置图标
                        .setIcon(R.drawable.ic_launcher_background)
                        //设置简单的列表项内容
                        .setItems(items, new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {

                            }
                        });
                //添加确定按钮
                setPositiveButton(builder);
                //添加取消按钮
                setNegativeButton(builder).create().show();
            }

        }

栗子3

单选列表项对话框

只要调用AlertDialog.Builder的setSingleChoiceItems()方法即可创建单选列表项的对话框。调用setSingleChoiceItems()方法时既可传入数组作为参数,也可传入Cursor(相当于数据库查询结果集)作为参数,还可以传入ListAdapter作为参数。如果传入ListAdapter作为参数,则由ListAdapter来提供多个列表项组件。

android基本对话框 安卓对话框控件_单选_07

主要代码

/*单选列表项对话框*/
        public void singleChoice(View source)
        {
            AlertDialog.Builder builder = new AlertDialog.Builder(this)
            //设置对话框标题
            .setTitle("单选列表项对话框")
                    //设置图标
            .setIcon(R.drawable.ic_launcher_background)
                    //设置单选列表项,默认选中第二项(索引为1)
            .setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    TextView show = (TextView) findViewById(R.id.show);
                    show.setText("你选中了《"+items[which]+"》");
                }
            });
            //添加确定按钮
            setPositiveButton(builder);
            //添加取消按钮
            setNegativeButton(builder).create().show();
        }
}

 

备注:这里特地贴上三个例子的完整代码下载地址:下载代码