`

Dialog的使用

阅读更多

 在Android中经常会使用到对话框Dialog。下面是实现一个基本的Dialog的代码:

private void showDialog(){
		
		LayoutInflater layoutInflater = this.getLayoutInflater();
		View customDialog = layoutInflater.inflate(R.layout.dialog_signin, null);
		Dialog dialog = new Dialog(this);
		dialog.setTitle("I am a Dialog");
		dialog.setContentView(customDialog);
		dialog.show();
	}

 你可以看到,首先你需要自己设计好这个对话框的布局,然后将它Inflate出来(当然,使用Java代码也是可以的),然后,通过setContentView方法加载进去,最后显示。而通常我们的使用对话框的时候都有一定的模式,比如,显示一些简短的内容,底部有确定或取消按钮的。这样写一个对话框太麻烦了,因此,系统提供了AlertDialog,AlertDialog继承自Dialog。我们先看看代码:

 

private void showCommonAlertDialog() {

		AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
		AlertDialog dialog = builder.create();
		dialog.setTitle("AlertDialog");
		dialog.setIcon(R.drawable.ic_launcher);
		dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定",
				new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {

						Log.e(TAG, "确定按钮:" + which);
					}
				});
		dialog.show();
	}

 由于AlertDialog是protected方法,也就是你不能实例化它,而是需要通过它的内部类Builder来获得一个builder实例,通过这个实例来create一个AlertDialog,然后你就可以使用这个AlertDialog来进行各种设置了,比如你可以setButton,这个Button就默认位于对话框的底部了,方便我们使用。但是这样使用起来还是麻烦,也会你也会问为什么sdk不让我们直接实例化AlertDialog,看看下面的代码你就明白了:

 

private void showCommonAlertDialog2() {

		new AlertDialog.Builder(MainActivity.this)
				.setTitle("AlertDialog")
				.setIcon(R.drawable.ic_launcher)
				.setPositiveButton("确定", new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {

						Log.e(TAG, "showCommonAlertDialog clicked");
					}
				}).show();
	}

使用Builder类进行各种设置的时候,它直接返回一个builder,可以直接进行一系列的设置。这样使用起来,较上面又更简单了。这种方法也是个人比较推荐的方法。

效果如图:

普通Dialog普通AlertDialog

 

 

除了这种普通的对话框,AlertDialog还提供了一系列已经定义好的对话框,很方便使用。

比如下面要介绍的:列表对话框,单选对话框,多选对话框,进度条对话框,自定义对话框。

 

1.列表对话框

private void showListDialog() {

		final String[] fruit = new String[] { "apple", "orange", "banana",
				"black berry", "lichee", "pear", "strawberry" };

		new AlertDialog.Builder(MainActivity.this).setTitle("fruit")
				.setItems(fruit, new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {

						new AlertDialog.Builder(MainActivity.this).setMessage(
								"您选择了:" + which + ":" + fruit[which]).show();
					}
				}).show();
	}

列表对话框 

 

2.单选对话框

private void showSingleChoiceListDialog() {

		final String[] fruit = new String[] { "apple", "orange", "banana",
				"black berry", "lichee", "pear", "strawberry" };

		// 按钮的顺序从左到右是setNegativeButton,setNeutralButton,setPositiveButton
		new AlertDialog.Builder(MainActivity.this)
				.setTitle("fruit")
				.setSingleChoiceItems(fruit, -1,
						new DialogInterface.OnClickListener() {

							@Override
							public void onClick(DialogInterface dialog,
									int which) {

								Log.e(TAG, "你选择了:" + which);
							}
						})
				.setNegativeButton("取消", new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {

						Log.e(TAG, "取消按钮:" + which);
					}
				})
				.setPositiveButton("确定", new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {

						Log.e(TAG, "确定按钮:" + which);
					}
				})
				.setNeutralButton("关闭", new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {

						Log.e(TAG, "关闭按钮:" + which);
					}
				}).show();
	}

 单选对话框

 

3.多选对话框

private void showMulChoiceListDialog() {

		final List<Integer> selectedFruit = new ArrayList<Integer>();
		selectedFruit.add(0);
		selectedFruit.add(2);
		selectedFruit.add(6);
		final String[] fruit = new String[] { "apple", "orange", "banana",
				"black berry", "lichee", "pear", "strawberry" };
		AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this)
				.setIcon(R.drawable.ic_launcher)
				.setTitle("fruit")
				.setMultiChoiceItems(
						fruit,
						new boolean[] { true, false, true, false, false, false,
								true },
						new DialogInterface.OnMultiChoiceClickListener() {

							@Override
							public void onClick(DialogInterface dialog,
									int which, boolean isChecked) {

								if (isChecked) {

									selectedFruit.add(which);
								} else if (selectedFruit.contains(which)) {

									selectedFruit.remove(Integer.valueOf(which));
								}
							}
						})
				.setPositiveButton("确定", new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {

						Log.e("onclick", "确定");

						StringBuilder sb = new StringBuilder();
						int fruitSize = selectedFruit.size();
						for (int i = 0; i < fruitSize; i++) {

							sb.append(fruit[selectedFruit.get(i)]);
						}
						Toast.makeText(MainActivity.this, sb, Toast.LENGTH_LONG)
								.show();
					}
				}).setNegativeButton("取消", null).create();
		alertDialog.show();
	}

 多选对话框

 

4.进度条对话框

private void showProgressDialog() {

		ProgressDialog progressDialog = new ProgressDialog(this);
		progressDialog.setIcon(R.drawable.ic_launcher);
		progressDialog.setTitle("正在处理数据...");
		progressDialog.setMessage("请骚等...");
		progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
		progressDialog.setMax(100);
		progressDialog.setProgress(30);
		progressDialog.setButton(ProgressDialog.BUTTON_POSITIVE, "暂停",
				new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {

						Log.e(TAG, "按钮被点击:" + which);
					}
				});
		progressDialog.show();
	}

 进度条对话框

 

 5.自定义对话框

private void showCustomDialog() {

		LayoutInflater layoutInflater = this.getLayoutInflater();
		View customDialog = layoutInflater
				.inflate(R.layout.dialog_signin, null);
		new AlertDialog.Builder(this).setView(customDialog)
				.setPositiveButton("确定", new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						Log.e(TAG, "确定:" + which);
					}
				})
				.setNeutralButton("取消", new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						Log.e(TAG, "取消:" + which);
					}
				}).create().show();
	}

自定义AlertDialog 

 

 上面这些就是一些系统默认的对话框。你还可以对这些对话框设置透明度和设置对话框的位置:

 

1.设置带有透明度的对话框

private void showTransDialog() {

		AlertDialog alertDialog = new AlertDialog.Builder(this)
				.setMessage("透明对话框")
				.setPositiveButton("确定", new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {

						Log.e(TAG, "确定按钮:" + which);
					}
				}).create();
		Window window = alertDialog.getWindow();
		WindowManager.LayoutParams lp = window.getAttributes();
		lp.alpha = 0.8f;// 这里设置透明度
		window.setAttributes(lp);
		alertDialog.show();
	}

 半透明对话框

 

2.设置对话框的位置

private void showCustomLocationDialog() {

		AlertDialog alertDialog = new AlertDialog.Builder(this)
				.setMessage("自定义位置的对话框")
				.setPositiveButton("确定", new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {

						Log.e(TAG, "确定按钮:" + which);
					}
				}).create();
		Window window = alertDialog.getWindow();
		window.setGravity(Gravity.LEFT | Gravity.BOTTOM);// 左下角位置的对话框
		alertDialog.show();
	}

 自定义位置对话框

 

 

 

 

 

 

 

  • 大小: 55.2 KB
  • 大小: 57.4 KB
  • 大小: 35.9 KB
  • 大小: 39.6 KB
  • 大小: 46.6 KB
  • 大小: 53 KB
  • 大小: 52.4 KB
  • 大小: 54.6 KB
  • 大小: 51.2 KB
0
0
分享到:
评论

相关推荐

    JQuery UI Dialog使用样例

    **jQuery UI Dialog 使用详解** jQuery UI 是一个基于 jQuery 的用户界面库,提供了丰富的交互组件,其中 Dialog(对话框)是一个非常实用的功能。Dialog 可以用于创建模态或非模态窗口,通常用于显示警告、确认...

    7种形式的Android Dialog使用实例

    本文将详细介绍7种常见的Android Dialog使用实例,帮助开发者更好地理解和应用这些对话框。 1. 基本确认对话框 这种对话框通常用于确认用户的操作,例如退出应用。创建此类Dialog的基本代码如下: ```java ...

    Jquery_ui的dialog使用文档概述

    ### Jquery UI 的 Dialog 使用详解 #### 概述 Jquery UI 的 `Dialog` 是一个非常实用且功能丰富的用户界面组件,它可以帮助开发者快速创建一个浮动的窗口,该窗口包括标题和内容两个主要部分。此外,`Dialog` 组件...

    仿ipone滚轮搭配Dialog使用实例转载

    "仿iPhone滚轮搭配Dialog使用实例"就是一个很好的例子,它展示了如何在Android应用中实现类似iPhone的滚轮选择器,并将其集成到Dialog中。这个实例对于那些希望在Android应用中引入iOS风格界面元素的开发者来说,...

    dialog 使用帧动画,解决了不能满屏

    标题"dialog 使用帧动画,解决了不能满屏"所指出的问题,是在Dialog中应用帧动画来实现全屏显示的一种解决方案。 帧动画是Android中的一个动画类型,它通过连续播放一系列图像(帧)来创建动态效果。在Dialog中使用...

    Android Dialog使用详解

    在本文中,我们将深入探讨如何在Android应用中有效地使用Dialog。 首先,理解Dialog的基本概念。Dialog通常包含一个标题(title)、内容(content)和一组按钮(如“确定”、“取消”)。它们可以是模态(阻塞用户...

    Dialog的正确使用方式

    本篇将详细讲解如何正确使用Dialog及其规范模板,以及创建Dialog的方法。 首先,了解Dialog的基本类型。Android SDK提供了多种内置的Dialog样式,如AlertDialog、ProgressDialog、DatePickerDialog、...

    dialog 使用代码实例

    可以创建一个自定义的布局文件,使用带有圆角的背景,然后将这个布局作为Dialog的内容视图。例如,创建一个名为`dialog_rounded.xml`的布局文件: ```xml &lt;!-- res/layout/dialog_rounded.xml --&gt; android:layout...

    Dialog简单使用demo

    以上是一个最基本的Dialog使用示例。当然,Dialog还可以根据需求进行更复杂的定制,例如自定义布局、改变按钮颜色、添加图标等。这些可以通过`setView()`方法加载自定义的布局,或者通过`setIcon()`设置图标。 如果...

    Android中Dialog使用详解

    在Android开发中,Dialog是一种非常重要的组件,它用于在用户界面之上显示临时的窗口,通常用来提示用户一些信息或者请求用户的确认操作。本篇将详细讲解如何在Android中使用AlertDialog,以及相关的知识点。 首先...

    Jquery Easyui对话框组件Dialog使用详解(14)

    ### jQuery EasyUI 对话框组件 Dialog 使用详解 #### 1. 概述 jQuery EasyUI 是一个基于 jQuery 的前端 UI 框架,提供了一系列易于使用的组件,用于创建现代的网页应用。其中,Dialog 对话框组件是常用组件之一,...

    Dialog使用.ppt

    使用Dialog Dialog国际联机检索系统使用方法与技巧

    Android Dialog中加载GIF

    5. **使用Dialog**:在需要展示GIF的场景下,实例化并显示`MyLoadingDialog`: ```java MyLoadingDialog loadingDialog = new MyLoadingDialog(this); loadingDialog.show(); loadingDialog.loadGif(); // 在显示...

    常见的popupwindow和dialog使用

    总之,理解和掌握`PopupWindow`和`Dialog`的使用对于Android开发者来说至关重要,它们能够极大地丰富应用的交互体验,提供更多的功能和信息展示方式。无论是为了提升用户体验,还是为了满足特定的业务需求,都需要...

    Dialog显示放大图片

    在Android开发中,"Dialog显示放大图片"是一个常见的需求,特别是在用户需要查看详细图像时。这一功能使得用户可以在不离开当前界面的情况下,通过一个半透明的弹出窗口(Dialog)来查看图片的全貌,同时支持滑动...

    jquery ui中的dialog

    jQuery UI Dialog使用CSS来定义样式,允许开发者通过更改主题或添加自定义CSS来改变对话框的外观。默认情况下,jQuery UI提供了一些预设的主题,如`smoothness`、`ui-darkness`等。 6. **附加功能** Dialog还支持...

    Android 五中常用的Dialog使用

    在本文中,我们将深入探讨Android中五种常用的Dialog类型及其使用方法。 1. **确定取消对话框** 这是最基础的Dialog类型,通常包含一个确认按钮和一个取消按钮。用户可以选择进行某项操作或取消。创建此类对话框,...

    Android dialog 大合集源码

    这个“Android dialog 大合集源码”提供了多种对话框的实现,涵盖了Android编程中可能遇到的各种对话框场景,是开发者学习和实践Dialog使用的一个宝贵资源。 1. **基础对话框**: - `AlertDialog`:Android系统中...

Global site tag (gtag.js) - Google Analytics