Android 对话框

1.普通对话框

一共有三个按钮,不设置的话不会显示。

	public void normal(View v){
		AlertDialog.Builder builder=new Builder(this);
		builder.setTitle("我是普通对话框");
		builder.setMessage("对话框要显示的具体内容");
		//显示在按钮上的文字,第二个参数表示点击后执行的方法
		builder.setPositiveButton("确定", new OnClickListener(){
			public void onClick(DialogInterface dialog, int which) {
				Toast.makeText(getApplicationContext(), "确定", Toast.LENGTH_SHORT).show();
			}	
		});
		builder.setNegativeButton("取消",new OnClickListener(){
			public void onClick(DialogInterface dialog, int which) {
				Toast.makeText(getApplicationContext(), "取消", Toast.LENGTH_SHORT).show();
			}	
		});
		//不调用不会显示
		builder.show();
	}
2.单选对话框

		AlertDialog.Builder builder=new Builder(this);
		builder.setTitle("你选择你喜欢的明星");
		final String[] items = {"周星驰","tf-boys","刘德华","成龙"};
		//第二个参数表示,默认选中的索引,1 表示tf-boys
		builder.setSingleChoiceItems(items, 1, new OnClickListener(){
			public void onClick(DialogInterface dialog, int which) {
				//which表示选中的项的索引
				Toast.makeText(getApplicationContext(), items[which], Toast.LENGTH_SHORT).show();
				//让当前对话框消失
				dialog.dismiss();
			}
		});
		builder.show();
3.多选对话框
	public void multi(View v){
		AlertDialog.Builder builder=new Builder(this);
		builder.setTitle("你选择你喜欢的明星");
		final String[] items = {"周星驰","tf-boys","刘德华","成龙"};
		boolean[] checkedItems={true,false,false,false};
		builder.setMultiChoiceItems(items,checkedItems , new OnMultiChoiceClickListener(){

			public void onClick(DialogInterface dialog, int which,
					boolean isChecked) {
				Toast.makeText(getApplicationContext(), items[which]+isChecked, Toast.LENGTH_SHORT).show();
			}
		});
		builder.setPositiveButton("确定", new OnClickListener(){
			public void onClick(DialogInterface dialog, int which) {
				Toast.makeText(getApplicationContext(), "确定", Toast.LENGTH_SHORT).show();
				dialog.dismiss();
			}	
		});
		builder.show();		
	}

items等待选择的条目,checkdItems 表示哪个条目是默认选中的,可以用来记录选中状态,boolean数组元素个数要与items元素个数一样。

每次改变任何一个条目的选中状态,都会调用 onClick 方法,dialog表示当前对话框,which表示改变的条目索引,isChecked表示改变成为的状态。

实际上,一个builder可以组合使用,既有多选对话框,也有普通对话框。
4.进度条对话框

		final ProgressDialog dialog=new ProgressDialog(this);
		//设置进度条样式水平
		dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
		dialog.setMax(100);
		dialog.setTitle("正在玩命下载中...");
		dialog.show();
		new Thread(){
			public void run(){
				for(int i=0;i<=100;++i)
				{
					dialog.setProgress(i);
					SystemClock.sleep(100);
				}
				dialog.dismiss();
			}
		}.start();

需要注意的问题:

在构建对话框时,使用的上下文必须使用this(activity),而不是getApplication()上下文。这是为了通知是在哪个activity中创建对话框,因为这个对话框也是activity的一部分,而不是上下文。

而Toast与此不同,它是一个系统级的显示控件,因此只需要随便传一个上下文即可。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值