Android之 对话框 的使用
一个对话框通常是在当前Activity之前显示的一个小的窗口。下面的Activity失去了焦点,上面的对话框接收用户的交互信息。对话框通常用来作为提示以及直接与程序运行过程相关的短暂停留界面。
AlertDialog
描述:一个可以处理0个、1个、2个或3个按钮,和/或一组包含复选框或单选按钮等可以选择的项。AlertDialog足够胜任创建和用户交互的大部分对话框,并且它也是被推荐的对话框类型。具体如下:
创建一个AlertDialog
一个AlertDialog对话框继承与Dialog类。你应该使用如下特性来装点你的对话框:
l 一个标题
l 一条信息
l 1、2、或3个按钮
l 一组可供选择的项(复选框或者单选按钮)
为了创建一个AlertDialog,可以使用AlertDialog.Builder子类。使用
AlertDialog.Builder(Context)得到一个对话框构造器,然后使用该类的共有方法来定义AlertDialog对话框的所有属性。在你使用对话框构造器设置完属性之后,调用create()方法即可得到一个AlertDialog的对象。
添加按钮
为了创建一个有着一个个按钮紧挨着的AlertDialog对话框,就像下图所示的那样,可以使用set…Button()方法:
主要代码如下:
btn1 = (Button) findViewById(R.id.dlg_with_btns);
// 点击按钮后创建AlertDialog对话框
btn1.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
// 先创建对话框构造器
AlertDialog.Builder builder =
new AlertDialog.Builder(MainActivity.this);
// 创建完后设置对话框的属性
// 标题
builder.setMessage("Welcome to my blog on CSDN?")
// 不可取消(即返回键不能取消此对话框)
.setCancelable(false)
// 设置第一个按钮的标签及其事件监听器
.setPositiveButton("Good",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
// ..
}
})
// 设置第二个按钮的标签及其事件监听器
.setNegativeButton("Need improving",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
// ..
}
});
// 用对话框构造器创建对话框
AlertDialog alert = builder.create();
// 显示对话框
alert.show();
}
});
首先,调用setMessage(CharSequence)来设置对话框的标题。然后,开始方法链并用setCancelable(boolean)设置对话框不能被取消(用户不能使用返回键来关闭对话框)。为每个按钮,使用set…Button()方法中的一个,例如setPositiveButton(),它需要传入按钮的标签,以及当用户点击该按钮后预设动作的DialogInterface.OnClickListener事件监听器。(用SetNeutralButton()来设置中间按钮)
注意:每种类型的按钮你仅仅可以为AlertDialog添加一个。也就是说,你不能拥有多于一个的”positive”按钮。这样就限制了可能拥有的最多按钮的情况:positive、neutral、negative。这些名字技术上来讲和你按钮的实际功能毫无关系,但应该可以帮助你跟踪每个按钮做了什么事。
添加一个列表
像下图一样,为了添加一系列可选择的列表到AlertDialog,可以使用setItems()方法。
具体代码如下:
btn2 = (Button) findViewById(R.id.dlg_with_list);
btn2.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
final CharSequence[] items =
{"Engineer", "Student", "IT-_-!"};
AlertDialog.Builder builder =
new AlertDialog.Builder(MainActivity.this);
builder.setTitle("What's your job?")
.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
Toast.makeText(getApplicationContext(), items[item],
Toast.LENGTH_SHORT).show();
}
});
AlertDialog alert = builder.create();
alert.show();
}
});
首先,用setTitle(CharSequence)方法设置对话框的标题。然后,调用setItems()来添加一系列可选择项,这个方法接收可选项的显示内容数组以及一个定义当用户选中一个项目时所进行的动作的DialogInterface.OnClickListener事件监听器。
添加复选框和单选按钮
为了在对话框内部创建一系列多项项目(复选框)或者单选项目(单选框),可以分别使用setMultiChoiceItems()和setSingleChoiceItems()方法。假如你在onCreateDialog()回掉方法中创建其中的一种可选项目,Android系统会为你管理这一组可选项目的状态。只要这个Activity是活动的,对话框就会记得这些可选项目之前的状态,但当用户离开此Activity时,之前的选择状态就会丢失。
具体代码如下:
btn3.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
final CharSequence[] items =
{"NanJing", "ShangHai", "YanChen", "Other.."};
AlertDialog.Builder builder =
new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Where do you live?");
builder.setSingleChoiceItems(items, -1,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
Toast.makeText(getApplicationContext(), items[item],
Toast.LENGTH_SHORT).show();
}
});
AlertDialog alert = builder.create();
alert.show();
}
});
提示:为了在用户离开或者暂停Activity时保存选择状态,你必须在Activity的生命周期中保存或恢复设置。为了永久的保存选择状态,你需要使用一种数据存储技术来保存设置。
创建一个自定义对话框
假如你想拥有一个自定义的对话框,你可以为对话框创建你自己的布局。在你定义好布局之后,可将根类View的对象或者布局资源ID传给setContentView(View)。
自定义对话框如下所示:
例如,为了创建如下形式的对话框,大致需要的步骤为:
1、创建对话框布局文件,例如在layout下创建custom_dialog.xml文件,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_root"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dip">
<ImageView android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginRight="10dip"/>
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:textColor="#FFFFFF"/>
</LinearLayout>
这个XML布局文件在LinearLayout(线性布局中)定义了一个ImageView和TextView。
2、将以上布局文件设置为对话框的布局,并且定义ImageView和TextView的内容元素:
btn4 = (Button) findViewById(R.id.dlg_customized);
btn4.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
Dialog dialog = new Dialog(MainActivity.this);
dialog.setContentView(R.layout.custom_dialog);
dialog.setTitle("Custom Dialog");
TextView text = (TextView)
dialog.findViewById(R.id.text);
text.setText("Hello, this is a custom dialog!");
ImageView image = (ImageView)
dialog.findViewById(R.id.image);
image.setImageResource(R.drawable.icon);
dialog.show();
}
});
在你初始化对话框之后,使用setContentView(int)来设置对话框的布局为自定义的布局,需要传入的参数为布局文件的ID。既然对话框已经定义了一个布局,你可以使用findViewById(int)来找到组件,并且可以更改它们的显示内容。
需要注意的地方:
1)最下面在对话框布局文件上为了找到image及text组件时,是使用的
dialog.findViewById,不然会程序会出现异常而退出!
2)最后不要忘了dialog.show();不然什么都看不到。
小结:本篇简要地介绍了对话框的使用,其中,一般比较常用的就是第一种对话框,简洁明了,最后一种对话框配合复杂的布局,要是能够用好的话,可以实现很不错的效果。
分享到:
相关推荐
本示例主要关注`Android`中的几种基本对话框类型:普通AlertDialog、列表对话框(ListDialog)、进度对话框(ProgressDialog)以及自定义对话框,通过实例来阐述如何在代码中实现它们。 首先,我们来看`AlertDialog...
本篇文章将对Android中的对话框进行深入的总结,包括基本概念、类型、使用方法以及自定义对话框的实现。 首先,Android提供了三种基本类型的对话框: 1. AlertDialog:这是最常用的对话框类型,通常包含标题、消息...
以上是"Android常用对话框源码--对话框大全"中的主要知识点,通过学习和实践这些,开发者可以熟练掌握Android应用中对话框的使用,提高用户体验。在实际开发中,可以根据需求灵活组合和定制,创造出符合应用特性的...
首先,我们要知道Android中的对话框(Dialog)是应用程序窗口的一种形式,它浮现在当前活动(Activity)之上,提供一种与用户交互的方式。对话框通常用于提示用户做出选择、输入信息或者显示警告。 1. **创建对话框...
通过分析这个源码,开发者可以深入理解Android对话框的工作原理,以及如何灵活地对其进行自定义。这对于开发具有个性化的用户体验的应用程序至关重要。同时,这个例子也可以作为学习Android UI设计和事件处理的一个...
在给定的“Android之对话框Dialog(博客源码)”资源中,我们可以学习到如何在Android应用中实现三种不同类型的对话框:时间弹框、自定义弹框以及等待弹框。 首先,我们来详细了解一下时间弹框。时间弹框通常用于让...
本资源“安卓Android源码——android 自定义对话框.rar”显然包含了关于如何在Android平台上创建和定制对话框的源代码示例。通过这个压缩包,我们可以学习到如何摆脱系统默认样式,设计出更符合应用风格的对话框。 ...
这个"Android 进度条对话框Demo.zip"包含了一个示例项目,用于演示如何在Android应用中正确地使用进度条对话框。以下是对该Demo的详细解析: 首先,`1-120Q2203J50-L.png`可能是一个截图,展示了进度条对话框在实际...
这个"Android 进度条对话框Demo"很可能是包含了一个示例项目,帮助开发者了解如何在Android应用中正确使用ProgressDialog。下面将详细讲解Android中进度条对话框的使用方法和相关知识点。 1. **ProgressDialog的...
通过分析这些内容,我们可以深入理解Android对话框的工作原理及其创建方法。 首先,Android中的对话框分为几种类型,包括普通对话框(AlertDialog)、进度对话框(ProgressDialog)、自定义对话框等。这里主要关注...
在Android开发中,自定义对话框(Dialog)是一种常见的用户交互方式,用于向用户展示临时信息或进行简单操作。为了使对话框更具吸引力和用户体验,我们常常会为它添加动画效果。下面将详细介绍如何在Android中实现...
总之,掌握Android Studio中各种对话框的使用技巧是提升Android应用用户体验的关键。从简单到复杂,从普通对话框到带有多选功能的对话框,开发者需要灵活运用这些组件来满足不同场景的需求。同时,利用下载进度条...
在Android开发中,自定义对话框(Dialog)是创建用户界面时经常需要用到的一种组件。它能够提供一种非模态或模态的方式与用户交互,显示临时的信息或者进行一些简单的操作选择。本文将深入探讨如何在Android中实现...
对话框(Dialog)是Android中的一个窗口,它浮于应用程序之上,用于向用户展示临时信息或进行简单的交互操作。默认的对话框样式可能无法满足所有设计需求,因此需要自定义来实现个性化的设计。 要创建自定义对话框...
在Android开发中,Dialog是一种非常常见的用户界面组件,它用于在主界面之上显示临时的、半透明的窗口,用于向用户展示信息或者进行简单的交互。本文将深入探讨如何创建一个具有选择功能的对话框(Dialog),包括...
这个“Android dialog对话框用法实例.rar”压缩包提供了一些示例代码,帮助开发者了解如何在Android应用中创建和使用Dialog。 首先,我们来详细探讨Android Dialog的基本概念。Dialog是Android UI设计中的一种非...
下面我们将深入探讨如何在Android中创建和使用自定义对话框。 1. **基础Dialog使用** Android SDK提供了`AlertDialog`类,可以快速创建一个基本的对话框。首先,你需要创建一个`AlertDialog.Builder`实例,然后...
总结起来,创建具有圆角和毛玻璃效果的对话框是Android开发中的常见需求,可以通过自定义布局、使用`RenderScript`进行模糊处理以及调整`DialogFragment`的设置来实现。同时,`PopupWindow`提供了更丰富的自定义选项...
本篇文章将深入探讨如何在Delphi XE5环境下创建和使用Android对话框。 首先,我们需要了解Delphi XE5的FireMonkey(FMX)框架。它是Delphi和C++Builder用于跨平台开发的统一界面层,支持Windows、Mac OS X、iOS以及...
在Android开发中,对话框(Dialog)是一种非常重要的组件,用于与用户进行交互,提供临时的通知或确认信息,或者在不中断主应用流程的...通过不断实践,你会更熟练地掌握Android对话框的使用,从而提高应用的用户体验。