Android对话框AlertDialog

本文介绍了Android中常用的四种对话框:AlertDialog、ProgressDialog、DatePickerDialog和TimePickerDialog。重点讲解了AlertDialog的功能及其创建步骤,并通过六个实例展示了如何使用不同方法设置对话框内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 一、4种常用的对话框
  AlertDialog:功能最丰富、实际应用最广泛的对话框。
  1.   ProgressDialog:进度条对话框。
  2.   DatePickerDialog:日期选择对话框。
  3.   TimePickerDialog:时间选择对话框。

 二、AlertDialog对话框的结构以及创建步骤

AlertDialog对话框的功能很强大,它可以生成各种内容的对话框,但AlertDialog生成的对话框总有如下的结构。

      

从上面对话框的结构来看,创建一个对话框需要经过如下几步:

  1. 创建AlertDialog.Builder对象。
  2. 调用AlertDialog.Builder的setTitle()或者setCustomTitle()方法设置标题。
  3. 调用AlertDialog.Builder的setIcon()方法设置图标。
  4. 调用AlertDialog.Builder的相关设置方法设置对话框的内容。
  5. 调用AlertDialog.Builder的setPositiveButton()、setNegativeButton()或者setNeutralButton()方法添加按钮。
  6. 调用AlertDialog.Builder的create()方法创建AlertDialog对象,再调用AlertDialog对象的show()方法将该对话框显示出来。

上面的6个步骤中,第4个步骤最为灵活,也是很关键的一步,AlertDialog允许创建各种内容的对话框。

AlertDialog提供的6种方法来指定对话框的内容:

  1. setMessage():设置对话框内容为简单文本内容。
  2. setItems():设置对话框内容为简单列表项。
  3. setSingleChoiceItems():设置对话框内容为单选列表项。
  4. setMultieChoiceItems():设置对话框内容为多选列表项.
  5. setAdapter():设置对话框内容为自定义列表项。
  6. setView():设置对话框内容为自定义View。

三、实例展示

1、使用setMessage()方法显示提示消息的对话框,当点击按钮的时候,会弹出对话框。

btn_1.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				//创建一个AlertDialog.Builder对象
				 new AlertDialog.Builder(MainActivity.this)
				 //设置标题
				 .setTitle("简单对话框")
				//设置图标
				 .setIcon(R.drawable.ic_launcher)
				 //设置简单文本内容
				.setMessage("这是一个简单的对话框")
				//设置确定按钮
				.setPositiveButton("确定", new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						Toast.makeText(MainActivity.this, "你单击了确定按钮", Toast.LENGTH_SHORT).show();
					}
				})
				//设置取消按钮
				.setNegativeButton("取消", new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						Toast.makeText(MainActivity.this, "你单击了取消按钮", Toast.LENGTH_SHORT).show();
					}
				}).create().show();
			}
		});
<span style="font-size:14px;">
</span>

2、使用setItem()创建简单列表对话框,调用该方法时需要传入一个数组或者数组资源的资源ID。

         //定义一个数组作为参数
		final String[] items = {"北京","上海","广州","西安"};
		//简单列表对话框
		btn_2.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				new AlertDialog.Builder(MainActivity.this)
				.setTitle("简单列表对话框")
				.setIcon(R.drawable.ic_launcher)
				.setItems(items, new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						Toast.makeText(MainActivity.this, "你单击了"+items[which]+"选项", Toast.LENGTH_SHORT).show();
					}
				})
				.setPositiveButton("确定", new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						Toast.makeText(MainActivity.this, "你单击了确定按钮", Toast.LENGTH_SHORT).show();
					}
				}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						Toast.makeText(MainActivity.this, "你单击了取消按钮", Toast.LENGTH_SHORT).show();
					}
				}).create().show();
			}
		

3、使用setSingleChoiceItems()方法创建单选列表对话框,调用该方法的时候可以传入数组、Cursor、ListAdapter作为参数。

btn_3.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				new AlertDialog.Builder(MainActivity.this)
				.setTitle("单选列表对话框")
				.setIcon(R.drawable.ic_launcher)
				.setSingleChoiceItems(items, 1,new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						Toast.makeText(MainActivity.this, "你单击了"+items[which]+"选项", Toast.LENGTH_SHORT).show();
					}
				})
				.setPositiveButton("确定", new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						Toast.makeText(MainActivity.this, "你单击了确定按钮", Toast.LENGTH_SHORT).show();
					}
				}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						Toast.makeText(MainActivity.this, "你单击了取消按钮", Toast.LENGTH_SHORT).show();
					}
				}).create().show();
			}
		});

4、使用setMultieChoiceItems()方法创建多选项对话框,调用该方法的时候可以参入数组、Cursor作为参数.

btn_4.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				new AlertDialog.Builder(MainActivity.this)
				.setTitle("多选列表对话框")
				.setIcon(R.drawable.ic_launcher)
				.setMultiChoiceItems(items,new boolean[]{true,false,false,true},null)
				.setPositiveButton("确定", new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						Toast.makeText(MainActivity.this, "你单击了确定按钮", Toast.LENGTH_SHORT).show();
					}
				})
				.setNegativeButton("取消", new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						Toast.makeText(MainActivity.this, "你单击了取消按钮", Toast.LENGTH_SHORT).show();
					}
				}).create().show();
			}
		});

5、使用setAapter()方法创建自定义列表对话框。调用该方法的时候需要传入一个Adapter作为参数.

btn_5.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				new AlertDialog.Builder(MainActivity.this)
				.setTitle("自定义列表对话框")
				.setIcon(R.drawable.ic_launcher)
				.setAdapter(new ArrayAdapter<String>(MainActivity.this, R.layout.line,items), null)
				.setPositiveButton("确定", new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						Toast.makeText(MainActivity.this, "你单击了确定按钮", Toast.LENGTH_SHORT).show();
					}
				})
				.setNegativeButton("取消", new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						Toast.makeText(MainActivity.this, "你单击了取消按钮", Toast.LENGTH_SHORT).show();
					}
				}).create().show();
			}
		});

6、使用setView()方法创建自定义View的对话框。调用该方法的时候接受一个View组件,该View组件将作为对话框的内容。

btn_6.setOnClickListener(new OnClickListener() {
			TableLayout loginForm  = (TableLayout) getLayoutInflater().inflate(R.layout.login, null);
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				new AlertDialog.Builder(MainActivity.this)
				.setTitle("自定义对话框")
				.setIcon(R.drawable.ic_launcher)
				.setView(loginForm)
				.setPositiveButton("登陆", new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						
						Toast.makeText(MainActivity.this, "此处执行登陆处理", Toast.LENGTH_SHORT).show();
					}
				})
				.setNegativeButton("取消", new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						Toast.makeText(MainActivity.this, "此处执行取消处理", Toast.LENGTH_SHORT).show();
					}
				}).create().show();
			}
		});
		














评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值