文档章节

对话框1

mutouzhang
 mutouzhang
发布于 2014/03/11 13:16
字数 1323
阅读 34
收藏 0
AlertDialog 警告框 应用最广功能最丰富
ProgressDialog 进度对话框 只是对进度条的封装
DatePickerDialog 日期选择对话框
TimePickerDialog 时间选择对话框


AlertDialog提供了一些方法来生成4种与定义对话框:

  • 带消息、带N个按钮的提示对话框

  • 带列表、带N个按钮的列表对话框

  • 带多个单选列表项,带N个按钮的对话框

  • 带多个多选列表项,带N个按钮的对话框

使用AlertDialog创建的步骤大致为:

  1. 创建AlertDialog.Builder对象,该对象是AlertDialog的创建器

  2. 调用AlertDialog.Builder的方法为对话框设置图标、标题、内容等

  3. 调用AlertDialog.Builder的create()创建AlertDialog对话框

  4. 调用AlertDialog的show()显示对话框


setMultiChoiceItems(CharSequence[] items,boolean[] checkedItens,DialogInterface.OnMulti choiceClickListener listener)创建多选列表对话框

setSingleChoiceItems(CharSequence[] items,int checkedItem,DialogInterface.OnMulti choiceClickListener listener)创建单选列表对话框

setAdapter(ListAdapter adapter,DialogInterface.OnClickListener listener)创建根据ListAdapter提供列表项的列表对话框

setItems(int itemsId,DialogInterface.OnClickListener listener)创建普通列表对话框


提示对话框

xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:gravity="center_horizontal"
	>
<!-- 显示一个普通的文本编辑框组件 -->
<EditText 
	android:id="@+id/show"
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content" 
	android:editable="false"
	/>
<!-- 定义一个普通的按钮组件 -->
<Button
	android:id="@+id/bn01"  
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content" 
	android:text="显示对话框"
	/>	
</LinearLayout>

MainActivity

package org.crazyit.dialog;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.AlertDialog.Builder;

import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

/**
 * Description:
 * <br/>site: <a href="http://www.crazyit.org">crazyit.org</a> 
 * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */
public class DialogTest extends Activity
{
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		Button bn = (Button)findViewById(R.id.bn01);
		//定义一个AlertDialog.Builder对象
		final Builder builder = new AlertDialog.Builder(this);
		//为按钮绑定事件监听器
		bn.setOnClickListener(new View.OnClickListener()
		{
			@Override
			public void onClick(View source)
			{
				// 设置对话框的图标
				builder.setIcon(R.drawable.tools);
				// 设置对话框的标题
				builder.setTitle("自定义普通对话框");
				// 设置对话框显示的内容
				builder.setMessage("一个简单的提示对话框");
				// 为对话框设置一个“确定”按钮
				builder.setPositiveButton("确定"
					//为列表项的单击事件设置监听器
					, new OnClickListener()
					{
						@Override
						public void onClick(DialogInterface dialog, int which)
						{
							EditText show = (EditText) findViewById(R.id.show);
							// 设置EditText内容
							show.setText("用户单击了“确定”按钮!");
						}
					});
				// 为对话框设置一个“取消”按钮
				builder.setNegativeButton("取消"
					,  new OnClickListener()
					{
						@Override
						public void onClick(DialogInterface dialog, int which)
						{
							EditText show = (EditText) findViewById(R.id.show);
							// 设置EditText内容
							show.setText("用户单击了“取消”按钮!");
						}
					});
				//创建、并显示对话框
				builder.create().show();
			}
		});
	}
}

通过setItems方法建立普通列表对话框

xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:gravity="center_horizontal"
	>
<TextView
	android:id="@+id/show" 
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content" 
	android:text="测试文本内容"
	android:textSize="11pt"
	/>
<Button 
	android:id="@+id/bn" 
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content" 
	android:text="选择颜色"
	/>	
</LinearLayout>

MainActivity

package org.crazyit.dialog;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

/**
 * Description:
 * <br/>site: <a href="http://www.crazyit.org">crazyit.org</a> 
 * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */
public class ListDialog extends Activity
{	
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		Button bn = (Button)findViewById(R.id.bn);
		final Builder b = new AlertDialog.Builder(this);
		//为按钮绑定事件监听器
		bn.setOnClickListener(new View.OnClickListener()
		{
			@Override
			public void onClick(View source)
			{
				//设置对话框的图标
				b.setIcon(R.drawable.tools);
				//设置对话框的标题
				b.setTitle("简单列表对话框");
				//为对话框设置多个列表
				b.setItems(
					new String[] {"红色" , "绿色" , "蓝色"}
					//为按钮设置监听器
					, new OnClickListener() 
					{
						//该方法的which参数代表用户单击了那个列表项
						@Override
						public void onClick(DialogInterface dialog
							, int which) 
						{
							TextView show = (TextView)findViewById(R.id.show);
							//which代表哪个列表项被单击了
							switch(which)
							{
								case 0:
									show.setBackgroundColor(Color.RED);
									break;
								case 1:
									show.setBackgroundColor(Color.GREEN);
									break;
								case 2:
									show.setBackgroundColor(Color.BLUE);
									break;								
							}					
						}
					});
				//创建、并显示对话框
				b.create().show();	
			}
		});
	}
}

通过setSingleChoiceItems创建单选列表对话框

xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:gravity="center_horizontal"
	>
<TextView
	android:id="@+id/show" 
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content" 
	android:text="测试文本内容"
	android:textSize="11pt"
	android:background="#ff00ff00"
	/>
<Button 
	android:id="@+id/bn" 
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content" 
	android:text="选择颜色"
	/>	
</LinearLayout>

MainAcitivity

package org.crazyit.dialog;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

/**
 * Description:
 * <br/>site: <a href="http://www.crazyit.org">crazyit.org</a> 
 * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */
public class SingleChoiceDialog extends Activity
{
	final int SINGLE_DIALOG = 0x113;
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		Button bn = (Button)findViewById(R.id.bn);
		//为按钮绑定事件监听器
		bn.setOnClickListener(new View.OnClickListener()
		{
			@Override
			public void onClick(View source)
			{
				//显示对话框
				showDialog(SINGLE_DIALOG);				
			}
		});
	}
	//重写onCreateDialog方法创建对话框
	@Override
	public Dialog onCreateDialog(int id, Bundle state)
	{
		//判断需要生成哪种类型的对话框
		switch (id)
		{
			case SINGLE_DIALOG:
				Builder b = new AlertDialog.Builder(this);
				// 设置对话框的图标
				b.setIcon(R.drawable.tools);
				// 设置对话框的标题
				b.setTitle("单选列表对话框");
				// 为对话框设置多个列表
				b.setSingleChoiceItems(new String[]
				{ "红色", "绿色", "蓝色" }
				// 默认选中第二项
					, 1
					//为列表项的单击事件设置监听器
					, new OnClickListener()
					{
						@Override
						public void onClick(DialogInterface dialog,
							int which)
						{
							TextView show = (TextView) findViewById(R.id.show);
							// which代表哪个列表项被单击了
							switch (which)
							{
								//修改文本框的背景色
								case 0:
									show.setBackgroundColor(Color.RED);
									break;
								case 1:
									show.setBackgroundColor(Color.GREEN);
									break;
								case 2:
									show.setBackgroundColor(Color.BLUE);
									break;
							}
						}
					});
				// 添加一个“确定”按钮,用于关闭该对话框
				b.setPositiveButton("确定", null);
				// 创建对话框
				return b.create();
		}
		return null;
	}
}


© 著作权归作者所有

上一篇: 对话框2
下一篇: Gallery 画廊视图
mutouzhang
粉丝 6
博文 190
码字总数 91235
作品 0
洛阳
程序员
私信 提问
Android第四十一天(2)

1、对话框的分类 <1>AlertDialog 警告对话框(提示对话框) (1)父类:android.app.Dialog (2)创建AlertDialog对话框的步骤 a.创建AlertDialog.Builder对象,该对象能创建AlertDialog; ...

黄晓磊
2016/07/25
6
0
window.showModalDialog使用手册

基本介绍: showModalDialog() (IE 4+ 支持) showModelessDialog() (IE 5+ 支持) window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框。 window.showModelessDialog()方法用来...

陈招林
2010/03/24
165
0
MFC两个对话框之间的消息传输

在MFC项目中有时会涉及到两个对话框之间进行消息传输的事情。这里需要用到SendMessage()函数和PostMessage()函数。 这俩函数的区别可自行百度。这里我是使用的是SendMessage()函数。 》两个对...

clever_pig
2018/04/12
0
0
Android Dialog几种对话框

1,普通对话框 2,单选对话框 3,多选对话框 4,日期选择对话框 5,时间选择对话框 6,日期选择对话框 7,进度条对话框 普通对话框

lanyu96
2018/10/19
15
0
另类的CDialogBar——可停靠对话框的实现方法

本文大部分思路来自于《VISUAL C++ 6.0 MFC 类库参考手册》一书! CDialogBar在MFC中就是提供控制条形式的非模态对话框。 其使用过程很简单: 1.在MainFrame框架中声明变量 2.在MainFrame的O...

晨曦之光
2012/05/23
780
0

没有更多内容

加载失败,请刷新页面

加载更多

一套完整的软件开发流程是怎样的?

做什么事都需要一个流程,软件开发也不例外。 那么,一个软件从无到有到底是怎么开发的?一个软件产品的结果为什么是这样?为什么开发的速度不能再快一点。为什么程序员大多秃顶?他们有那么...

我想造火箭
11分钟前
2
0
漂亮思维导图怎样绘制?教你快速套用思维导图模板绘制d

用MindMaster软件绘制思维导图,会更加高效和美观!因为MindMaster是一款专业的思维导图软件,零基础经验的朋友花费5分钟时间就能掌握它的相关画法。以下是电脑软件思维导图画法的简单步骤。...

工具分享
13分钟前
3
0
linux 软链接与 硬链接的区别

软链接与硬链接的区别 1. 硬链接不会创建inode,即使用的inode都是一样的。软链接会创建新的inode。 2. 硬链接的访问属性和源文件一模一样,没有l的标识。软链接的访问属性写明了是l,且访问...

突突突酱
14分钟前
1
0
新特性解读 | MySQL 8.0.18 有权限控制的复制

原文:Replication with restricted privileges https://mysqlhighavailability.com/replication-with-restricted-privileges/ 作者:Pedro Figueiredo 翻译:管长龙 背景 MySQL 8.0.18 以前......

爱可生
23分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部