自定义弹窗 (二)

一般来说对话框式的弹窗,都会有三个按钮,一个是确定,一个是取消,一个是关闭。上一期的 自定义弹窗(一) 中介绍了一个可定制三个按钮的自定义对话框式弹窗。

那怎样针对三个按钮进行事件的监听呢?

在上一期的代码中直接进行修改,废话不多说,直接上代码。


AlertHelper中的showTips方法直接修改:


/**
	 * 弹出提示窗
	 * 
	 * @param titlestring
	 *            提示标题
	 * @param message
	 *            提示信息
	 * @param isshowcancle
	 *            是否显示取消按钮
	 * @param isshowclose
	 *            是否显示关闭按钮
	 * @param okstring
	 *            确定按钮字符
	 * @param canclestring
	 *            取消按钮字符
	 */
	public static Map<String, Object> showTips(Context context, String titlestring, String message, boolean isshowcancle, boolean isshowclose, String okstring, String canclestring)
	{
		final Map<String, Object> map = new HashMap<String, Object>();
		final AlertDialog dlg = new AlertDialog.Builder(context).setCancelable(false).create();
		dlg.show();
		map.put("AlertDialog", dlg);
		Window window = dlg.getWindow();
		window.setContentView(R.layout.alertdialog_showtxt);
		TextView title = (TextView) window.findViewById(R.id.AlertDialogTitle);
		Button btn_close = (Button) window.findViewById(R.id.btn_close);
		TextView text = (TextView) window.findViewById(R.id.AlertDialogText);
		Button ok = (Button) window.findViewById(R.id.btn_ok);
		Button cancel = (Button) window.findViewById(R.id.btn_cancel);
		title.setTypeface(typefacenormal);
		text.setTypeface(typefacenormal);
		ok.setTypeface(typefacebold);
		cancel.setTypeface(typefacebold);
		title.setText(titlestring);
		text.setText(Html.fromHtml(message));
		if (isshowcancle)
		{
			cancel.setVisibility(View.VISIBLE);
			cancel.setText(canclestring);
		} else
		{
			cancel.setVisibility(View.GONE);
		}
		if (isshowclose)
		{
			btn_close.setVisibility(View.VISIBLE);
		} else
		{
			btn_close.setVisibility(View.GONE);
		}
		ok.setText(okstring);
		ok.setOnClickListener(new View.OnClickListener()
		{
			public void onClick(View v)
			{
				dlg.cancel();
				map.put("status", 1);
			}
		});
		cancel.setOnClickListener(new View.OnClickListener()
		{
			public void onClick(View v)
			{
				dlg.cancel();
				map.put("status", 2);
			}
		});
		btn_close.setOnClickListener(new View.OnClickListener()
		{
			public void onClick(View v)
			{
				dlg.cancel();
				map.put("status", 0);
			}
		});
		return map;
	}



上面直接返回的是一个 Map<String, Object>。

接下来是在引用该方法的地方直接进行监听


如下

final Map<String, Object> map1 = AlertHelper.showTips(Main.this, "某某提示您", "  <font color=\"red\">含关闭按钮、含取消按钮</font>", true, true, "确定", "取消");
				AlertDialog dlg1 = (AlertDialog) map1.get("AlertDialog");
				dlg1.setOnCancelListener(new OnCancelListener()
				{
					@Override
					public void onCancel(DialogInterface dialog)
					{
						Message msg = new Message();
						msg.what = 0;
						int status = ((Integer) map1.get("status"));
						switch (status)
						{
						case 0:
							msg.obj = "点击了弹窗1的关闭按钮";
							break;
						case 1:
							msg.obj = "点击了弹窗1的确定按钮";
							break;
						case 2:
							msg.obj = "点击了弹窗1的取消按钮";
							break;
						}
						messageHandler.sendMessage(msg);
					}
				});
				break;

本例下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值