博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Adrnoid开发系列(二十五):使用AlertDialog创建各种类型的对话框
阅读量:5965 次
发布时间:2019-06-19

本文共 6824 字,大约阅读时间需要 22 分钟。

AlertDialog能够生成各种内容的对话框。可是每种对话框都会有这样的的结构:

类似下边这样的的:

这仅仅是最简单的对话框。

我们来看下创建一个对话框须要的步骤:

1、使用创建AlertDialog.Builder对象

2、调用AlertDialog.Builder的setTitle()或setCustomTitle()方法设置标题

3、调用AlertDialog.Builder的setIcon()方法设置图标

4、调用一些其它设置方法设置标题

5、调用AlertDialog.Builder的setPositiveButton()、setNegativeButton()或者setNeutralButton()加入多个button

6、调用create()方法创建AlertDialog对象,再调用AlertDialog对象的show()方法将该对话框显示出来。

新建Android项目,然后编写main.xml:

xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal"> <!-- 显示一个普通的文本编辑框组件 --> <EditText android:id="@+id/show" android:layout_width="match_parent" android:layout_height="wrap_content" android:editable="false"/> <!-- 定义一个普通的button组件 --> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="简单对话框" android:onClick="simple" /> <!-- 定义一个普通的button组件 --> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="简单列表项对话框" android:onClick="simpleList" /> <!-- 定义一个普通的button组件 --> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="单选列表项对话框" android:onClick="singleChoice" /> <!-- 定义一个普通的button组件 --> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="多选列表项对话框" android:onClick="multiChoice" /> <!-- 定义一个普通的button组件 --> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="自己定义列表项对话框" android:onClick="customList" /> <!-- 定义一个普通的button组件 --> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="自己定义View对话框" android:onClick="customView" /> </LinearLayout>

这里是定义了6个button和一个文本显示框。而且设置了对应的onClick属性

接下来,我们就要编写主界面的java代码:AlertDialogTest.java

package org.crazyit.ui;import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.content.DialogInterface.OnClickListener;import android.os.Bundle;import android.view.View;import android.widget.ArrayAdapter;import android.widget.TableLayout;import android.widget.TextView;public class AlertDialogTest extends Activity{	TextView show;	String[] items = new String[] { 			"疯狂Java讲义", "疯狂Ajax讲义",			"轻量级Java EE企业应用实战",			"疯狂Android讲义" };		@Override	public void onCreate(Bundle savedInstanceState)	{		super.onCreate(savedInstanceState);		setContentView(R.layout.main);		show = (TextView) findViewById(R.id.show);	}	public void simple(View source)	{		AlertDialog.Builder builder = new AlertDialog.Builder(this)			// 设置对话框标题			.setTitle("这是对话框标题")			// 设置图标			.setIcon(R.drawable.tools)			.setMessage("这是对话框内容");		// 为AlertDialog.Builder加入【确定】button		setPositiveButton(builder);		// 为AlertDialog.Builder加入【取消】button		setNegativeButton(builder)			.create()			.show();	}	public void simpleList(View source)	{		AlertDialog.Builder builder = new AlertDialog.Builder(this)			// 设置对话框标题			.setTitle("简单列表项对话框")			// 设置图标			.setIcon(R.drawable.tools)			// 设置简单的列表项内容			.setItems(items, new OnClickListener()			{				@Override				public void onClick(DialogInterface dialog, int which)				{					show.setText("你选中了《" + items[which] + "》");				}			});		// 为AlertDialog.Builder加入【确定】button		setPositiveButton(builder);		// 为AlertDialog.Builder加入【取消】button		setNegativeButton(builder)			.create()			.show();	}	public void singleChoice(View source)	{		AlertDialog.Builder builder = new AlertDialog.Builder(this)			// 设置对话框标题			.setTitle("单选列表项对话框")			// 设置图标			.setIcon(R.drawable.tools)			// 设置单选列表项,默认选中第二项(索引为1)			.setSingleChoiceItems(items, 1, new OnClickListener()			{				@Override				public void onClick(DialogInterface dialog, int which)				{					show.setText("你选中了《" + items[which] + "》");				}			});		// 为AlertDialog.Builder加入【确定】button		setPositiveButton(builder);		// 为AlertDialog.Builder加入【取消】button		setNegativeButton(builder)			.create()			.show();	}	public void multiChoice(View source)	{		AlertDialog.Builder builder = new AlertDialog.Builder(this)			// 设置对话框标题			.setTitle("多选列表项对话框")			// 设置图标			.setIcon(R.drawable.tools)			// 设置多选列表项,设置勾选第2项、第4项			.setMultiChoiceItems(items			, new boolean[]{false , true ,false ,true}, null);		// 为AlertDialog.Builder加入【确定】button		setPositiveButton(builder);		// 为AlertDialog.Builder加入【取消】button		setNegativeButton(builder)			.create()			.show();	}	public void customList(View source)	{		AlertDialog.Builder builder = new AlertDialog.Builder(this)			// 设置对话框标题			.setTitle("自己定义列表项对话框")			// 设置图标			.setIcon(R.drawable.tools)			// 设置自己定义列表项			.setAdapter(new ArrayAdapter
(this , R.layout.array_item , items), null); // 为AlertDialog.Builder加入【确定】button setPositiveButton(builder); // 为AlertDialog.Builder加入【取消】button setNegativeButton(builder) .create() .show(); } public void customView(View source) { //装载/res/layout/login.xml界面布局 TableLayout loginForm = (TableLayout)getLayoutInflater() .inflate( R.layout.login, null); new AlertDialog.Builder(this) // 设置对话框的图标 .setIcon(R.drawable.tools) // 设置对话框的标题 .setTitle("自己定义View对话框") // 设置对话框显示的View对象 .setView(loginForm) // 为对话框设置一个“确定”button .setPositiveButton("登录" , new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 此处可运行登录处理 } }) // 为对话框设置一个“取消”button .setNegativeButton("取消", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 取消登录。不做不论什么事情。

} }) // 创建、并显示对话框 .create() .show(); } private AlertDialog.Builder setPositiveButton( AlertDialog.Builder builder) { // 调用setPositiveButton方法加入确定button return builder.setPositiveButton("确定", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { show.setText("单击了【确定】button!

"); } }); } private AlertDialog.Builder setNegativeButton( AlertDialog.Builder builder) { // 调用setNegativeButton方法加入取消button return builder.setNegativeButton("取消", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { show.setText("单击了【取消】button!"); } }); } }

在这里边,第五个和第六个button用到了两个样式:array_item.xml和login.xml

我们看下他们的内容:

array_item.xml:

xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/TextView" android:textColor="#f0f" android:textSize="30dp" android:shadowColor="#ff0" android:shadowRadius="2" android:shadowDx="5" android:shadowDy="5" android:layout_width="match_parent" android:layout_height="wrap_content" />

login.xml:

通过AlertDialog能够制作出不同风格的对话框,在非常多时候都比較实用

而且我们能够通过确定button来把数据通过Intent传递到另外一个界面中。

你可能感兴趣的文章
Javascript异步数据的同步处理方法
查看>>
iis6 zencart1.39 伪静态规则
查看>>
SQL Server代理(3/12):代理警报和操作员
查看>>
Linux备份ifcfg-eth0文件导致的网络故障问题
查看>>
2018年尾总结——稳中成长
查看>>
JFreeChart开发_用JFreeChart增强JSP报表的用户体验
查看>>
度量时间差
查看>>
通过jsp请求Servlet来操作HBASE
查看>>
Shell编程基础
查看>>
Shell之Sed常用用法
查看>>
3.1
查看>>
校验表单如何摆脱 if else ?
查看>>
<气场>读书笔记
查看>>
Centos下基于Hadoop安装Spark(分布式)
查看>>
3D地图的定时高亮和点击事件(基于echarts)
查看>>
mysql开启binlog
查看>>
设置Eclipse编码方式
查看>>
分布式系统唯一ID生成方案汇总【转】
查看>>
并查集hdu1232
查看>>
Mysql 监视工具
查看>>