AlertDialog | 警告框 应用最广功能最丰富 |
ProgressDialog | 进度对话框 只是对进度条的封装 |
DatePickerDialog | 日期选择对话框 |
TimePickerDialog | 时间选择对话框 |
AlertDialog提供了一些方法来生成4种与定义对话框:
带消息、带N个按钮的提示对话框
带列表、带N个按钮的列表对话框
带多个单选列表项,带N个按钮的对话框
带多个多选列表项,带N个按钮的对话框
使用AlertDialog创建的步骤大致为:
创建AlertDialog.Builder对象,该对象是AlertDialog的创建器
调用AlertDialog.Builder的方法为对话框设置图标、标题、内容等
调用AlertDialog.Builder的create()创建AlertDialog对话框
调用AlertDialog的show()显示对话框
setMultiChoiceItems(CharSequence[] items,boolean[] checkedItens,DialogInterface.OnMulti choiceClickListener listener)创建多选列表对话框
setSingleChoiceItems(CharSequence[] items,int checkedItem,DialogInterface.OnMulti choiceClickListener listener)创建单选列表对话框
setAdapter(ListAdapter adapter,DialogInterface.OnClickListener listener)创建根据ListAdapter提供列表项的列表对话框
setItems(int itemsId,DialogInterface.OnClickListener listener)创建普通列表对话框
提示对话框
xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_horizontal" > <!-- 显示一个普通的文本编辑框组件 --> <EditText android:id="@+id/show" android:layout_width="fill_parent" android:layout_height="wrap_content" android:editable="false" /> <!-- 定义一个普通的按钮组件 --> <Button android:id="@+id/bn01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="显示对话框" /> </LinearLayout>
MainActivity
package org.crazyit.dialog; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.AlertDialog.Builder; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; /** * Description: * <br/>site: <a href="http://www.crazyit.org">crazyit.org</a> * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee * <br/>This program is protected by copyright laws. * <br/>Program Name: * <br/>Date: * @author Yeeku.H.Lee [email protected] * @version 1.0 */ public class DialogTest extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button bn = (Button)findViewById(R.id.bn01); //定义一个AlertDialog.Builder对象 final Builder builder = new AlertDialog.Builder(this); //为按钮绑定事件监听器 bn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View source) { // 设置对话框的图标 builder.setIcon(R.drawable.tools); // 设置对话框的标题 builder.setTitle("自定义普通对话框"); // 设置对话框显示的内容 builder.setMessage("一个简单的提示对话框"); // 为对话框设置一个“确定”按钮 builder.setPositiveButton("确定" //为列表项的单击事件设置监听器 , new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { EditText show = (EditText) findViewById(R.id.show); // 设置EditText内容 show.setText("用户单击了“确定”按钮!"); } }); // 为对话框设置一个“取消”按钮 builder.setNegativeButton("取消" , new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { EditText show = (EditText) findViewById(R.id.show); // 设置EditText内容 show.setText("用户单击了“取消”按钮!"); } }); //创建、并显示对话框 builder.create().show(); } }); } }
通过setItems方法建立普通列表对话框
xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_horizontal" > <TextView android:id="@+id/show" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="测试文本内容" android:textSize="11pt" /> <Button android:id="@+id/bn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="选择颜色" /> </LinearLayout>
MainActivity
package org.crazyit.dialog; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.AlertDialog.Builder; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.graphics.Color; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; /** * Description: * <br/>site: <a href="http://www.crazyit.org">crazyit.org</a> * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee * <br/>This program is protected by copyright laws. * <br/>Program Name: * <br/>Date: * @author Yeeku.H.Lee [email protected] * @version 1.0 */ public class ListDialog extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button bn = (Button)findViewById(R.id.bn); final Builder b = new AlertDialog.Builder(this); //为按钮绑定事件监听器 bn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View source) { //设置对话框的图标 b.setIcon(R.drawable.tools); //设置对话框的标题 b.setTitle("简单列表对话框"); //为对话框设置多个列表 b.setItems( new String[] {"红色" , "绿色" , "蓝色"} //为按钮设置监听器 , new OnClickListener() { //该方法的which参数代表用户单击了那个列表项 @Override public void onClick(DialogInterface dialog , int which) { TextView show = (TextView)findViewById(R.id.show); //which代表哪个列表项被单击了 switch(which) { case 0: show.setBackgroundColor(Color.RED); break; case 1: show.setBackgroundColor(Color.GREEN); break; case 2: show.setBackgroundColor(Color.BLUE); break; } } }); //创建、并显示对话框 b.create().show(); } }); } }
通过setSingleChoiceItems创建单选列表对话框
xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_horizontal" > <TextView android:id="@+id/show" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="测试文本内容" android:textSize="11pt" android:background="#ff00ff00" /> <Button android:id="@+id/bn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="选择颜色" /> </LinearLayout>
MainAcitivity
package org.crazyit.dialog; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.AlertDialog.Builder; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.graphics.Color; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; /** * Description: * <br/>site: <a href="http://www.crazyit.org">crazyit.org</a> * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee * <br/>This program is protected by copyright laws. * <br/>Program Name: * <br/>Date: * @author Yeeku.H.Lee [email protected] * @version 1.0 */ public class SingleChoiceDialog extends Activity { final int SINGLE_DIALOG = 0x113; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button bn = (Button)findViewById(R.id.bn); //为按钮绑定事件监听器 bn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View source) { //显示对话框 showDialog(SINGLE_DIALOG); } }); } //重写onCreateDialog方法创建对话框 @Override public Dialog onCreateDialog(int id, Bundle state) { //判断需要生成哪种类型的对话框 switch (id) { case SINGLE_DIALOG: Builder b = new AlertDialog.Builder(this); // 设置对话框的图标 b.setIcon(R.drawable.tools); // 设置对话框的标题 b.setTitle("单选列表对话框"); // 为对话框设置多个列表 b.setSingleChoiceItems(new String[] { "红色", "绿色", "蓝色" } // 默认选中第二项 , 1 //为列表项的单击事件设置监听器 , new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { TextView show = (TextView) findViewById(R.id.show); // which代表哪个列表项被单击了 switch (which) { //修改文本框的背景色 case 0: show.setBackgroundColor(Color.RED); break; case 1: show.setBackgroundColor(Color.GREEN); break; case 2: show.setBackgroundColor(Color.BLUE); break; } } }); // 添加一个“确定”按钮,用于关闭该对话框 b.setPositiveButton("确定", null); // 创建对话框 return b.create(); } return null; } }