Android Dialog I-创建一个dialog

本文档介绍了如何在Android中使用DialogFragment和AlertDialog来创建和管理对话框。DialogFragment是官方推荐的对话框容器,它能处理生命周期事件。文中详细讲解了如何创建一个带有消息和按钮的DialogFragment,如何添加按钮和列表,以及如何使用自定义布局。
摘要由CSDN通过智能技术生成

概述:

Dialog是一个让用户做出选择或者填写信息的小窗口, 通常dialog都不会占据整个屏幕, 但是需要用户必须做出选择. 关于如何设计Dialog, 可以参考这里.


Dialog类是dialog的基类, 但是我们应该避免直接使用这个类, 官方推荐我们使用以下两个子类:

AlertDialog: 一个Dialog, 可以设置title, 最多可以设置3个按键, 一个可以选择的列表, 或者一个用户自定义的layout.

DatePickerDialog或者TimePickerDialog:一个自带UI的可以选择时间或者日期的对话框.

这些子类为dialog定义了样式和结构, 但是我们应该使用DialogFragment作为dialog的容器. DialogFragment类提供了所有我们需要的创建和管理dialog行为的接口. 使用DialogFragment可以确保我们的dialog可以正确的处理生命周期事件, 比如用户点击了返回键或者旋转了屏幕等. DialogFragment还可以让我们方便的重用dialog的UI, 就好像一个普通的Fragment那样.

该文档中的DialogFragment都是android.support.v4.app.DialogFragment, 而不是android.app.DialogFragment.

 

创建一个DialogFragment:

通过DialogFragment我们可以创建多种dialog, 比如这是一个DialogFragment管理的AlertDialog:

public class FireMissilesDialogFragment extends DialogFragment {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the Builder class for convenient dialog construction
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setMessage(R.string.dialog_fire_missiles)
               .setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                      // FIRE ZEMISSILES!
                   }
               })
               .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                      // Usercancelled the dialog
                   }
               });
        // Create the AlertDialog object and return it
        return builder.create();
    }
}


包含一个message和两个button的dialog. 当我们创建这样的一个类的实例并且调用show()方法的时候, 就会显示出这样的一个dialog.

根据我们的dialog的复杂程度, 我们可以实现DialogFragment的其它回调方法.

 

创建一个AlertDialog:

通过AlertDialog我们可以创建多种dialog, 它如此牛X以至于很可能使我们唯一需要的dialog类. 如下图, 一个alert dialog中有三个区域:


1.      Title: 该项是可选的, 应该在区域2被详细信息占据的时候使用.如果我们仅仅需要一个简单的消息或者提一个问题, 则不应该使用title.

2.      Content area: 用于显示一条信息, 一个列表或者自定义的layout.

3.      Action buttons: 按钮, 一个dialog中不应该超过3个按钮.

AlertDialog.Builder类为我们提供了可以设置上述三项的API, 还包括一个layout, 栗子:

// 1. Instantiate an AlertDialog.Builder with its constructor
AlertDialog.Builder builder = new AlertDialog.Builder

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值