AlertDialog的对话框模式

        我们之前都有经常使用AlertDialog,平时比较常使用的是利用AlertDialog直接创建带按钮的对话框,但是其实AlertDialog非常强大,它不仅可以生成带按钮的提示框,还可以生成带列表的列表对话框,概括起来有以下4种:

    ①确定、中立和取消等N个按钮的提示对话框,其中的按钮个数不是固定的,可以根据需要添加,例如,不需要中立按钮,则可以生成只带有确定和取消按钮的对话框,也可以是只带一个按钮的对话框。

     ②带列表的列表对话框。

     ③带多个单选列表项和N个按钮的列表对话框。

     ④带多个多选列表项和N个按钮的列表对话框。

接下来来看看效果图:

AlertDialog的对话框模式_第1张图片

显示带列表的对话框:

AlertDialog的对话框模式_第2张图片

显示带单选项列表的对话框:

AlertDialog的对话框模式_第3张图片

显示带多选列表项的对话框:

AlertDialog的对话框模式_第4张图片

其中第一种形式只需AlertDialog类即可生成,后面三种需要AlertDialog.Builder类,其提供的常用方法有如下几种:

方法 描述
setTitle( CharSequence title)
设置标题
setIcon( Drawable icon)
通过drawable资源对象为对话框设置图标
setIcon( Drawable icon)
通过对资源ID为对话框设置图标
setMessage( CharSequence message)
用于为对话框设置要显示的内容
.setPositiveButton( CharSequence text, OnClickListener listener)
用于设置确定按钮
setNegativeButton( CharSequence text, OnClickListener listener)

用于设置取消按钮
setNeutralButton( CharSequence text, OnClickListener listener)
用于设置中立按钮
setItems( CharSequence[] items, OnClickListener listener)
为对话框添加列表项
setSingleChoiceItems( CharSequence[] items, int checkedItem, OnClickListener listener)
为对话框添加单选列表项
setMultiChoiceItems( CharSequence[] items, boolean[] checkedItems, OnMultiChoiceClickListener listener)
为对话框添加多选列表项

接下来不多说,直接来个代码来实现看看吧!

package com.example.uidesign;


import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

@SuppressLint("NewApi")
public class MainActivity extends Activity {
	private static final int NOTIFYID_1 = 1;
	private Button btn1;
	private Button btn2;
	private Button btn3;
	private Button btn4;

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

		init();
		//显示带按钮的对话框
		btn1.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				AlertDialog alertDialog=new AlertDialog.Builder(MainActivity.this)
						.create();
				alertDialog.setIcon(R.drawable.noti);          //设置对话框的图标
				alertDialog.setTitle("系统提示:");               //设置对话框的标题
				alertDialog.setMessage("带取消、中立、确定按钮的对话框");       //设置要显示的内容
				//添加“取消”按钮
				alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE
						, "取消", new DialogInterface.OnClickListener() {
							
							@Override
							public void onClick(DialogInterface dialog, int which) {
								Toast.makeText(MainActivity.this, "您单击了取消", Toast.LENGTH_SHORT)
								.show();
							}
						});
				//添加“确定”按钮
				alertDialog.setButton(DialogInterface.BUTTON_POSITIVE
						, "确定", new DialogInterface.OnClickListener() {
							
							@Override
							public void onClick(DialogInterface dialog, int which) {
								Toast.makeText(MainActivity.this, "您单击了确定", Toast.LENGTH_SHORT)
								.show();
							}
						});
				//添加“中立”按钮
				alertDialog.setButton(DialogInterface.BUTTON_NEUTRAL
						, "中立", new DialogInterface.OnClickListener() {
							
							@Override
							public void onClick(DialogInterface dialog, int which) {
								Toast.makeText(MainActivity.this, "您单击了中立按钮", Toast.LENGTH_SHORT)
								.show();
							}
						});
				alertDialog.show();
			}
		});
		
		//显示带列表的对话框
		btn2.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {

				final String[] item={"跑步","排球","羽毛球","足球","体操"};
				Builder builder=new AlertDialog.Builder(MainActivity.this);
				builder.setIcon(R.drawable.noti);
				builder.setTitle("请选择你喜欢的运动");
				builder.setItems(item, new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						Toast.makeText(MainActivity.this, "您选择的运动是"+item[which], Toast.LENGTH_SHORT).show();
					}
				});
				builder.create().show();              //创建对话框并显示
			}
		});
		
		//显示带单选项列表的对话框
		btn3.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				final String[] item={"葡萄干","香蕉干","薯片","柠檬干","话梅"};
				Builder builder=new AlertDialog.Builder(MainActivity.this);
				builder.setIcon(R.drawable.noti);
				builder.setTitle("请选择你喜欢的运动");
				builder.setSingleChoiceItems(item, 0,new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						Toast.makeText(MainActivity.this, "您选择的零食是"+item[which], Toast.LENGTH_SHORT).show();
					}
				});
				builder.setPositiveButton("确定", null);             //添加确定按钮
				builder.create().show();                         //创建对话框并显示
			}
		});
		
		//显示带多选列表项的对话框
		btn4.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				//记录个列表的状态
				final boolean[] checkedItem=new boolean[] {false,true,false,true,false};
				//各列表项要显示的内容
				final String[] item={"故事书","言情小说","穿越文","校园爱情","古代言情"};
				Builder builder=new AlertDialog.Builder(MainActivity.this);
				builder.setIcon(R.drawable.noti);
				builder.setTitle("请选择你喜欢的书类型:");
				builder.setMultiChoiceItems(item, checkedItem, new DialogInterface.OnMultiChoiceClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which, boolean isChecked) {
						checkedItem[which]=isChecked;
					}
				});
				
				//为对话框添加"确定"按钮
				builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						//用于保存选择按钮
						String result="";
						for (int i = 0; i < checkedItem.length; i++) {
							//当选项被选择时
							if (checkedItem[i]) {
								//将选项内容添加到result中去
								result+=item[i]+"、";
								
							}
						}
						
						//当resul不为空时,通过消息提示框显示选择的结果
						if (!"".equals(result)) {
							//去掉后面的“、”
							result=result.substring(0, result.length()-1);
							Toast.makeText(MainActivity.this, "您选择了【"+result+"]", Toast.LENGTH_SHORT).show();
						}
					}
				});
				builder.create().show();                         //创建对话框并显示
			}
		});
            
	}
	
	public void init() {
		btn1=(Button) findViewById(R.id.button1);
		btn2=(Button) findViewById(R.id.button2);
		btn3=(Button) findViewById(R.id.button3);
		btn4=(Button) findViewById(R.id.button4);
		
	}
		
}
其中的xml代码很简单就不写了。(ps:可能这些很多人写过了,诸位大神们可以忽略不看,我是慢慢学习着来的。)

你可能感兴趣的:(java,手机,对话框)