首页 > 代码库 > 首篇 sdk 之 AlertDialog

首篇 sdk 之 AlertDialog

带着十足的干劲,用着有限的英语水平,我们来看看sdk里docs里的AlertDialog:

AlertDialog  

  SDK 原文描述:A dialog that can show a title, up to three buttons, a list of selectable items, or a custom layout.

 一个能够展示标题,多达三个按钮,一系列可选择条目的对话框。或者使用自定义的布局。

接下来就开始使用它:

  首先先声明一点,Dialog下的子类包括它本身,都是依附于一个Activity的生命,所以在创建一个Dialog时传递的上下文一定是某个Activity.this,而不是getApplicationContent(),切记这一点。

第一个用法也是最常用的:实现效果

技术分享

package com.aimqq.alertdialogsdk;import android.os.Bundle;import android.app.Activity;import android.app.AlertDialog;import android.app.AlertDialog.Builder;import android.content.DialogInterface;import android.content.DialogInterface.OnClickListener;import android.view.View;import android.widget.Toast;public class NormalDialog extends Activity {    private AlertDialog.Builder builder;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_normal_dialog);        builder = new Builder(NormalDialog.this);        builder.setTitle("AlertDialog");        builder.setMessage("欢迎来到aimqq博客");        builder.setPositiveButton("确定", new OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {                Toast.makeText(getApplicationContext(), "点击确定按钮",                        Toast.LENGTH_SHORT).show();            }        });        builder.setNegativeButton("取消", new OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {                // TODO Auto-generated method stub                Toast.makeText(getApplicationContext(), "点击取消按钮",                        Toast.LENGTH_SHORT).show();            }        });    }    public void show(View v) {        //这种方式也可以显示//        builder.show();        AlertDialog alertDialog = builder.create();        alertDialog.show();    }}

 这里说一个可能会有的疑问,为什么不直接 new AlertDialog(context)呢?因为你new不出来,她的三个构造方法都是protected!!

第二种用法:添加一个条目

技术分享技术分享

listBuilder = new Builder(NormalDialog.this);        listBuilder.setTitle("选择一种颜色");        String[] items = new String[] { "红色", "绿色", "蓝色", "黄色" };        listBuilder.setItems(items, new OnClickListener() {            // 参1 就是当前的这个 dialog 参2 就是被点击的那个条目            @Override            public void onClick(DialogInterface dialog, int which) {                switch (which) {                case 0:                    Toast.makeText(getApplicationContext(), "我是红色",                            Toast.LENGTH_SHORT).show();                    break;                case 1:                    Toast.makeText(getApplicationContext(), "我是绿色",                            Toast.LENGTH_SHORT).show();                    break;                case 2:                    Toast.makeText(getApplicationContext(), "我是蓝色",                            Toast.LENGTH_SHORT).show();                    break;                case 3:                    Toast.makeText(getApplicationContext(), "我是黄色",                            Toast.LENGTH_SHORT).show();                    break;                }            }        });

 

第四种用法:添加多选条目或者单选条目

技术分享    技术分享

multBuilder = new Builder(NormalDialog.this);        multBuilder.setTitle("选择你喜欢的颜色");        boolean[] checkedItems = new boolean[]{false,true,false,false}; //默认选中绿色        //参1 要显示的条目集   参2默认那些条目选中   参3 监听条目        multBuilder.setMultiChoiceItems(items, checkedItems , new OnMultiChoiceClickListener() {                        //参3 isChecked True if the click checked the item, else false.            @Override            public void onClick(DialogInterface dialog, int which, boolean isChecked) {                //这里可根据自身需要,做相应的逻辑处理            }        });        multBuilder.setPositiveButton("确定", new OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {            }        });        multBuilder.setNegativeButton("取消", new OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {            }        });

单选:

技术分享    技术分享

multBuilder.setSingleChoiceItems(items, 0, null);        multBuilder.setNegativeButton("取消", new OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {            }        });                multBuilder.setPositiveButton("确定", new OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {            }        });

 

第五种用法:创建一个自定义的AlterDialog

  You can then call setView() to place the layout in the dialog. 你可以使用setVIew()方法将局部添加到dialog

技术分享

Activity中的代码:

multBuilder = new Builder(NormalDialog.this);        View view = View.inflate(NormalDialog.this, R.layout.dialog_cust, null);        multBuilder.setView(view);        // 可使用view对象获取控件做相应的逻辑操作        multBuilder.setNegativeButton("取消", new OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {            }        });        multBuilder.setPositiveButton("登录", new OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {            }        });

布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="wrap_content"    android:layout_height="wrap_content">    <ImageView        android:src="@drawable/ic_launcher"        android:layout_width="match_parent"        android:layout_height="64dp"        android:scaleType="center"        android:background="#FFFFBB33"        android:contentDescription="@string/app_name" />    <EditText        android:id="@+id/username"        android:inputType="textEmailAddress"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginTop="16dp"        android:layout_marginLeft="4dp"        android:layout_marginRight="4dp"        android:layout_marginBottom="4dp"        android:hint="请输入账号" />    <EditText        android:id="@+id/password"        android:inputType="textPassword"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_marginTop="4dp"        android:layout_marginLeft="4dp"        android:layout_marginRight="4dp"        android:layout_marginBottom="16dp"        android:fontFamily="sans-serif"        android:hint="请输入密码"/></LinearLayout>

这基本就是AlertDialog使用的集中情况况,如果有遗漏或者错误请反馈一下,谢谢。

 再顺便简单提一下,因为没有使用太多,就简单说一下

可以将Acitivity设置成Dialog使用,通过设置acitivity的主题就可以实现:

<activity android:theme="@android:style/Theme.Holo.Dialog" >

首篇 sdk 之 AlertDialog