`

自定义AlertDialog

 
阅读更多
UiHelper.java文件:
package com.show.act;

import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class UiHelper {

	/** 点击确定后触发的事件. */
	public interface OnClickYesListener {
		abstract void onClickYes();
	}

	/** 点击取消后触发的事件. */
	public interface OnClickNoListener {
		abstract void onClickNo();
	}

	public static void showQuestionDialog(Context context, String title,
			String text, final OnClickYesListener listenerYes,
			final OnClickNoListener listenerNo) {

		Builder builder = new AlertDialog.Builder(context);

		if (!isBlank(text)) {
			final TextView textView = new TextView(context);
			textView.setText(text);
			LinearLayout layout = new LinearLayout(context);
			layout.setPadding(10, 0, 10, 0);
			layout.setOrientation(LinearLayout.VERTICAL);
			layout.addView(textView, new LayoutParams(LayoutParams.FILL_PARENT,
					LayoutParams.WRAP_CONTENT));
			final ImageView mImgView = new ImageView(context);
			mImgView.setBackgroundResource(R.drawable.icon);
			layout.addView(mImgView, new LayoutParams(LayoutParams.FILL_PARENT,
					LayoutParams.WRAP_CONTENT));
			builder.setView(layout);
		}
		builder.setTitle(title);
		builder.setPositiveButton(context.getString(R.string.yes),
				new OnClickListener() {
					public void onClick(DialogInterface dialog, int which) {
						if (listenerYes != null) {
							listenerYes.onClickYes();
						}
					}
				});
		builder.setNegativeButton(context.getString(R.string.no),
				new OnClickListener() {
					public void onClick(DialogInterface dialog, int which) {
						if (listenerNo != null) {
							listenerNo.onClickNo();
						}
					}
				});
		builder.setCancelable(true);
		builder.create().show();

	}

	/** 判断显示内容是否为null. */
	public static boolean isBlank(String str) {
		int strLen;
		if (str == null || (strLen = str.length()) == 0) {
			return true;
		}
		for (int i = 0; i < strLen; i++) {
			if ((Character.isWhitespace(str.charAt(i)) == false)) {
				return false;
			}
		}
		return true;
	}
}



在代码中,我们只要这样调用即可:
mButton.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				UiHelper.showQuestionDialog(ShowDialogActivity.this, "111",
						"222", new OnClickYesListener() {
							public void onClickYes() {
							}
						}, new OnClickNoListener() {
							public void onClickNo() {
							}
						});
			}
		});
分享到:
评论
1 楼 茉莉清茶 2011-12-21  
恩,这个也算一种,不过有一种更深入,就是重写AlertDialog,这样会更加随心所欲!

相关推荐

    android 自定义AlertDialog 与Activity相互传递数据

    新手在自定义AlertDialog上的疑问笔者猜测主要有两个: 1、自定义的layout如何放到AlertDialog中? 解答: 获取到layout的view之后,直接调用AlertDialog.Builder的setView方法即可。 2、如何对自定义AlertDialog中...

    android自定义AlertDialog

    android自定义AlertDialog,例如支付页面,先弹出自定义AlertDialog询问是否愿意支付,确定则弹出另外一个自定义AlertDialog,选择支付方式,android自定义AlertDialog,android自定义AlertDialog,android自定义...

    打造Android通用的自定义AlertDialog提示框使用示例

    在Android开发中,自定义`AlertDialog`是一种常见的需求,它能帮助我们提供更丰富的用户交互体验,让应用的通知、确认或选择操作更加个性化。本文将深入探讨如何打造一个通用的自定义`AlertDialog`,并结合实际示例...

    自定义AlertDialog对话框用于加载等耗时任务提示

    本篇将详细探讨如何自定义一个AlertDialog来作为耗时任务的提示。 首先,我们需要创建一个自定义的对话框布局文件。在项目的res/layout目录下,创建一个新的XML文件,例如`custom_dialog.xml`。这个布局文件可以...

    自定义AlertDialog,弧形GridView

    首先,我们从自定义AlertDialog开始。Android系统的AlertDialog是用于向用户展示重要信息或进行简单交互的对话窗口。默认情况下,它具有标准的矩形形状和系统提供的主题样式。要自定义它,我们需要创建一个继承自`...

    自定义AlertDialog_android_v1.0.01

    `自定义AlertDialog_android_v1.0.01`的更新主要针对自定义`AlertDialog`的功能进行了增强。通过此次更新,开发者现在可以更加灵活地自定义`AlertDialog`的样式。具体来说,更新允许开发者传入自定义的View资源来...

    自定义AlertDialog,模仿Ios弹出框

    这个是看了网上很多例子后,自己优化改进写出来的例子。用法和安卓原生的显示,可以由用户自行组合出自己想要的弹出框,不会高度定制限定死各种弹出框的UI,每个部件都是独立的,如标题,内容,左按钮,右按钮,底部...

    Android 自定义 AlertDialog

    因此,自定义AlertDialog成为了提升应用用户体验的重要手段。本文将深入探讨如何在Android中实现一个美观且功能丰富的自定义AlertDialog。 首先,我们要了解AlertDialog的基本结构。它通常包含一个标题、一个消息...

    自定义AlertDialog(仿微信)

    自定义AlertDialog(仿微信)

    Android 自定义AlertDialog 的内容view控制系统媒体音量

    最近项目里有个功能点,需要使用...我需要继承AlertDialog,设置自己的内容view,重写onKeyDown方法,设置dialog的位置等...... 写了个demo. Demo是在5.0手机上测试的, 6.0以上系统还需要添加动态运行时权限的逻辑 。

    自定义AlertDialog_android_v1.0.0

    压缩包中的"自定义AlertDialog_android_v1.0.0"可能包含了这个示例工程的源码和使用文档。通过查看这些资源,开发者可以更好地理解自定义`AlertDialog`的具体实现方式,并在自己的项目中应用。 总结来说,自定义`...

    自定义AlertDialog去除黑色背景的解决方法

    自定义AlertDialog去除黑色背景的解决方法 在 Android 开发中,AlertDialog 是一个常用的对话框组件,用于提示用户或获取用户输入。然而,在默认情况下,AlertDialog 会显示一个黑色的背景,这可能会影响应用程序的...

    Android编程自定义AlertDialog样式的方法详解

    "Android编程自定义AlertDialog样式的方法详解" Android编程中,自定义AlertDialog样式是非常常见的需求,因为它可以满足我们特定的UI风格和功能需求。今天,我们将详细介绍Android编程自定义AlertDialog样式的方法...

    安卓Dialog对话框相关-一个显示圆点水平移动加载提示的自定义AlertDialog.rar

    本资源"安卓Dialog对话框相关-一个显示圆点水平移动加载提示的自定义AlertDialog.rar"提供了这样一个自定义对话框的示例,其主要功能是展示一个水平移动的圆点动画,以指示加载过程。 首先,我们需要了解Dialog的...

    自定义alertDialog

    本教程将围绕“自定义`AlertDialog`”这一主题,详细介绍如何在不编写自定义布局的情况下,在Android应用中创建符合需求的对话框。 首先,我们需要了解`AlertDialog.Builder`类,它是创建`AlertDialog`的主要工具。...

    自定义AlertDialog对话框完整代码

    然而,系统默认的`AlertDialog`样式有时不能满足开发者的设计需求,这时我们就需要进行自定义以实现更个性化的对话框。本文将详细介绍如何自定义一个`AlertDialog`,并提供相关的代码示例。 首先,自定义`...

    AndroidAlertDialog:Android 自定义 AlertDialog

    然而,系统默认的`AlertDialog`样式可能无法满足所有设计需求,这时就需要自定义`AlertDialog`来实现特定的UI和功能。本文将深入探讨如何在Java中自定义`AlertDialog`。 首先,我们需要了解`AlertDialog`的基本构建...

    Android 自定义AlertDialog对话框样式

    "Android 自定义AlertDialog对话框样式" Android 自定义AlertDialog对话框样式是Android开发中一个非常重要的知识点。AlertDialog是一个常用的对话框组件,用于提示用户或让用户进行选择。然而,在实际的项目开发...

Global site tag (gtag.js) - Google Analytics