AlertDialog 用于弹出提示框,本身并没有构造函,不可以通过构造函数来初始化,首先需要通过AlertDialog.Builder来创建一个Buider,然后有两种方法来完成一个AlertDialog:一种方法是使用Builder对象中的方法定义AlertDialog的属性,然后再使用show()方法来创建并显示AlertDialog提示框;另一种方法是先使用create方法获得AlertDialog对象,然后使用AlertDialog对象的方法定义AlertDialog属性,最后使用show()方法显示AlertDialog提示框。
AlertDialog.builder构造函数有两种:
1.AlertDialog.builder(Content content);
2.AlertDialog.builder(Content content,int theme)
AlertDialog的主要方法及用途介绍如下。
1.void dismiss():将对话框从屏幕中移除
2.void setButton(int whichButton,CharSequece text, DialogInterface.OnClickListener):设置对话框的按钮
3.void setView(View view ):将视图控件显示在对话框中
4.void setMessage(CharSequence message):设置对话框的显示内容
5.setTitle(CharSequence title):为对话框设置标题
6.void setIcon(Drawable icon)和void seticon(int resId):为对话框设置图标
7.AlertDialog.Builder setMultiChoiceItems(items, checkedItems, listener):在对话框中显示多选框
8.AlertDialog.Builder setSingleChoiceItems(CharSequence[] items,int checkedItem,DialogInterface.OnclickListener):在对话框中显示单选框
9.AlertDialog.Builder setItems(CharSequence[]items,Dialoginterface.OnClickListener listener):在对话框中显示列表
下面是利用AlertDialog创建的7种不同风格的对话框,希望对初学android的朋友起到一定的帮助作用:
(1)布局文件main.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"
android:orientation="vertical" >
<TextView
android:id="@+id/textvie1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Textview"/>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="两个按钮"/>
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="三个按钮"/>
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="显示视图"/>
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="多选列表"/>
<Button
android:id="@+id/button5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="单选列表"/>
<Button
android:id="@+id/button6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="列表数据"/>
<Button
android:id="@+id/button7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="自定义视图"/>
</LinearLayout>
(2)程序代码如下
package com.example.alertdialog;
import com.example.alertdialog.R.layout;
import android.R.anim;
import android.R.raw;
import android.app.Activity;
import android.app.ActionBar;
import android.app.AlertDialog;
import android.app.Fragment;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.os.Build;
public class AlertDialogDemo extends Activity {
private AlertDialog dialog;
private AlertDialog.Builder builder;
private TextView tView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tView=(TextView)this.findViewById(R.id.textvie1);
Button button1=(Button)this.findViewById(R.id.button1);
Button button2=(Button)this.findViewById(R.id.button2);
Button button3=(Button)this.findViewById(R.id.button3);
Button button4=(Button)this.findViewById(R.id.button4);
Button button5=(Button)this.findViewById(R.id.button5);
Button button6=(Button)this.findViewById(R.id.button6);
Button button7=(Button)this.findViewById(R.id.button7);
View.OnClickListener listener=new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button1:
dialog1();
break;
case R.id.button2:
dialog2();
break;
case R.id.button3:
dialog3();
break;
case R.id.button4:
dialog4();
break;
case R.id.button5:
dialog5();
break;
case R.id.button6:
dialog6();
break;
case R.id.button7:
dialog7();
break;
}
}
};
button1.setOnClickListener(listener);
button2.setOnClickListener(listener);
button3.setOnClickListener(listener);
button4.setOnClickListener(listener);
button5.setOnClickListener(listener);
button6.setOnClickListener(listener);
button7.setOnClickListener(listener);
}
public void dialog1(){
dialog=new AlertDialog.Builder(this).create();
dialog.setTitle("提示");
dialog.setMessage("确定退出吗?");
dialog.setIcon(android.R.drawable.ic_dialog_alert);
//创建监听器
DialogInterface.OnClickListener listener=new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
if (which==DialogInterface.BUTTON_POSITIVE) {//按下确定
dialog.dismiss();
AlertDialogDemo.this.finish();
} else if(which==DialogInterface.BUTTON_NEGATIVE){//按下取消
dialog.dismiss();
}
}
};
dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定", listener);
dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", listener);
dialog.show();
}
public void dialog2(){
dialog=new AlertDialog.Builder(this).create();
dialog.setTitle("调查");
dialog.setMessage("你平时忙吗?");
dialog.setIcon(android.R.drawable.ic_dialog_info);//设置对话框的图标为ic_dialog_alert
//创建按键监听器
DialogInterface.OnClickListener listener=new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
String str="";
switch (which) {
case DialogInterface.BUTTON_POSITIVE:
str="平时很忙";
break;
case DialogInterface.BUTTON_NEUTRAL:
str="平时一般";
break;
case DialogInterface.BUTTON_NEGATIVE:
str="平时轻松";
break;
}
tView.setText(str);
}
};
dialog.setButton(DialogInterface.BUTTON_POSITIVE, "忙碌", listener);
dialog.setButton(DialogInterface.BUTTON_NEUTRAL, "一般", listener);
dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "不忙", listener);
dialog.show();
}
public void dialog3(){
dialog=new AlertDialog.Builder(this).create();
dialog.setTitle("请输入");
dialog.setMessage("你平时忙吗?");
dialog.setIcon(android.R.drawable.ic_dialog_info);
final EditText tEdit=new EditText(this);
dialog.setView(tEdit);
//创建按键监听器
DialogInterface.OnClickListener listener=new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
tView.setText("输入的是:"+tEdit.getText().toString());//将输入的内容转化为字符串
}
};
dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定", listener);
dialog.show();
}
public void dialog4(){
final String item[]=new String[]{"北京","上海","广州"};
final boolean bSelect[]=new boolean[item.length];
//创建按键监听器
DialogInterface.OnMultiChoiceClickListener mListener=new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
// 用一个数组记录下选择的所有选项
bSelect[which]=isChecked;
}
};
builder=new AlertDialog.Builder(this);
builder.setMultiChoiceItems(item, null, mListener);
dialog=builder.create();
dialog.setTitle("复选框");
DialogInterface.OnClickListener listener =new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
String str="你选择了:";
for (int i = 0; i < bSelect.length; i++) {
if( bSelect[i]){
str=str+"\n"+item[i];
}
}
tView.setText(str);
}
};
dialog.setButton(DialogInterface.BUTTON_POSITIVE,"确定", listener);
dialog.show();
}
public void dialog5(){
final String item[]=new String[]{"北京","上海","广州"};
final boolean bSelect[]=new boolean[item.length];
//创建按键监听器
DialogInterface.OnClickListener sListener=new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 用一个数组记录下选择的所有选项
bSelect[which]=true;
}
};
builder=new AlertDialog.Builder(this);
builder.setSingleChoiceItems(item, -1, sListener);//在对话框中显示单选框,checkedItem=-1表示没有被选中的
dialog=builder.create();
dialog.setTitle("单选框");
DialogInterface.OnClickListener listener =new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
String str="你选择了:";
for (int i = 0; i < bSelect.length; i++) {
if( bSelect[i]){
str=str+"\n"+item[i];
}
}
tView.setText(str);
}
};
dialog.setButton(DialogInterface.BUTTON_POSITIVE,"确定", listener);
dialog.show();
}
public void dialog6(){
final String item[]=new String[]{"北京","上海","广州"};
final boolean bSelect[]=new boolean[item.length];
//创建按键监听器
DialogInterface.OnClickListener sListener=new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 用一个数组记录下选择的所有选项
String str="你选择了:"+item[which];
tView.setText(str);
}
};
builder=new AlertDialog.Builder(this);
builder.setItems(item,sListener);
dialog=builder.create();
dialog.setTitle("列表框");
DialogInterface.OnClickListener listener =new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
};
dialog.setButton(DialogInterface.BUTTON_POSITIVE,"取消", listener);
dialog.show();
}
public void dialog7(){
LayoutInflater inflater=getLayoutInflater();
View Layout=inflater.inflate(R.layout.dialog, null);
final EditText tEdit=(EditText)latout.findViewById(R.id.editText1);
dialog=new AlertDialog.Builder(this).create();
dialog.setTitle("自定义布局");
dialog.setView(Layout);
DialogInterface.OnClickListener listener=new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
tView.setText("输入的是:"+tEdit.getText().toString());
}
};
dialog.setButton(DialogInterface.BUTTON_POSITIVE,"确定", listener);
dialog.setButton(DialogInterface.BUTTON_NEGATIVE,"取消", listener);
dialog.show();
}
}