安卓弹出对话框——AlertDialog(二)
在Android中,启动一个对话框有三种方式:
1、定义一个新的activity,并将其主题设置为对话框风格
2、使用AlertDialog类,并且显示它
3、使用 Android的Dialog类的子类,并且显示它
现在学习AlertDialog.Builder创建各种形式的对话框。
首先,看看启动界面如下:

用土司来显示效果,因为多次用到,所以将其抽象为一个方法。
- protected void showToast(String string) {
- Toast.makeText(this, string, Toast.LENGTH_SHORT).show();
- }
1、点击第一个按钮后,出现如下对话框:

对于这个对话框,我们用到了AlertDialog.Builder类的几个方法:
setTitle:设置标题
setIcon:设置图标
setMessage:设置文本
setPositiveButton:设置第一个按钮
setNeutralButton:第二个按钮
setNegativeButton:第三个按钮
本段代码如下:
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.button1:
- new AlertDialog.Builder(this)
- .setTitle("这是一个最简单的对话框")
- .setIcon(R.drawable.img1)
- .setMessage("你好!!!")
- .setPositiveButton("开始", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- DialogActivity.this.showToast("你点击了开始按钮 "+ which);
- }
- })
- .setNeutralButton("暂停", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- DialogActivity.this.showToast("你点击了暂停按钮 "+ which);
- }
- })
- .setNegativeButton("退出", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- DialogActivity.this.showToast("你点击了退出按钮 " + which);
- }
- }).show();
- break;
2、第二个对话框效果如下图

对于这个对话框,我们用到了这个方法
setItem(),即将setMessage改成这个方法就可以了。
代码如下:其中items是一个成员变量。final String[] items = {"开始","暂停","退出"};
- case R.id.button2:
- new AlertDialog.Builder(this)
- .setTitle("选项列表对话框")
- .setIcon(R.drawable.img2)
- //items的第一个参数也可以接受itemID,所以可写在xml文件中
- .setItems(items, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- DialogActivity.this.showToast("你点击了按钮 " + items[which]);
- }
- }).show();
- break;
3、第三个对话框:

setSingleChoiceItem,设置单选列表对话框
代码如下:
- case R.id.button3:
- new AlertDialog.Builder(this)
- .setTitle("带单选框的列表对话框")
- .setIcon(R.drawable.img3)
- //setSingleChoiceItems()的第二个参数是设置默认选项,选项索引从0开始,-1代表不选择任何选项。
- .setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- DialogActivity.this.showToast("你点击了按钮 " + items[which]);
- //需调用这个方法,使点击后对话框消失,不然一直不会消失的
- dialog.cancel();
- }
- }).create().show();
- break;
4、第四个对话框:

主要用到了方法:
setMultiChoiceItems
代码如下:
- case R.id.button4:
- new AlertDialog.Builder(this)
- .setTitle("你的爱好有:")
- .setIcon(R.drawable.img3)
- .setMultiChoiceItems(R.array.string_array_name, null, new DialogInterface.OnMultiChoiceClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which, boolean isChecked) {
- String[] array = DialogActivity.this.getResources().getStringArray(R.array.string_array_name);
- String str;
- if(isChecked) {
- number++;
- }else {
- number--;
- }
- DialogActivity.this.showToast(array[which] + (isChecked ?" 选中了":" 取消了") );
- }
- })
- .setPositiveButton("确定", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- DialogActivity.this.showToast("你一共选择了 "+ number + "项");
- }
- }).show();
- break;
这次,并没有直接用数组,而是在strings.xml中定义的一个数组资源
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <string-array name="string_array_name">
- <item>健美操</item>
- <item>跳舞</item>
- <item>跑步</item>
- </string-array>
- </resources>
5、第5个对话框:

setView(view)方法来显示登录框。接受的参数为View(view,editText的组合),以LayoutInflater来实现。
要得到LayoutInflater(布局泵),只需要调用
LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
我们用inflater .inflater()用来找layout下xml布局文件,并且实例化。
类似于findVIewbyID,区别是一个得到整个布局,一个得到单个的组件。
代码如下:
- case R.id.button5:
- LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- View view = inflater.inflate(R.layout.dialog, null);
- new AlertDialog.Builder(this)
- .setTitle("登陆框")
- .setIcon(R.drawable.img4)
- .setView(view)
- .setPositiveButton("确定", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- DialogActivity.this.showToast("正在登录,请稍后。。。");
- }
- }).show();
res/layout/dialog.xml布局为两个TextView,两个EditText,如下:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical">
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="账号"
- />
- <EditText
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:id="@+id/username"
- />
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="密码"
- />
- <EditText
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:id="@+id/password"
- />
- </LinearLayout>
【转】http://blog.csdn.net/kuangc2008/article/details/6358915
安卓弹出对话框——AlertDialog(二)的更多相关文章
- 安卓弹出对话框——Alertdialog
在Android开发当中,在界面上弹出一个Dialog对话框使我们经常需要做的,本篇随笔将详细的讲解Dialog对话框这个概念,包括定义不同样式的对话框. 一.Dialog 我们首先来看看androi ...
- 安卓弹出对话框——Alertdialog(一)
首先看各种样式的对话框: 我们看到,Dialog有很多的子类实现,所以我们要定义一个对话框,使用其子类来实例化一个即可,而不要直接使用Dialog这个父类来构造. 二.AlertDialog 今天我们 ...
- 【Andriod-AlertDialog控件】 弹出对话框AlertDialog用法
Result: Code: import android.app.Activity; import android.app.AlertDialog; import android.content.Di ...
- AlertDialog.Builder弹出对话框
在Android中,弹出对话框使用AlertDialog.Builder方法. new AlertDialog.Builder(MainActivity.this).setTitle("本机 ...
- ViewPagerWithImageDemo【ViewPager如何判断滑动到第一页和最后一页以及弹出对话框功能】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 记录viewpager滑动的时候弹出对话框的功能(关键功能是滑动弹出对话框后,隐藏对话框的时候当前页可以还原到原位置),顺便判断首页 ...
- Response.Write("<script>alert('弹出对话框!')</script>") 后跟Response.Redirect("page.aspx");不能弹出对话框,直接跳转页面了 如何解?
Response.Write和Response.Redirect一起用的时候就会这样,write脚本和redirect脚本不能同时使用,这样不会执行脚本,最好使用ClientScript 改进方法: ...
- selenium移动div里面的滚动条,操作弹出对话框
还是使用js来移动 首先要定位到这个元素 倾向于使用js来定位元素,输入下面的脚本,按下回车键,即可在调试页面看到对应的div块$("div.table-responsive") ...
- Android 手机卫士--弹出对话框
在<Android 手机卫士--解析json与消息机制发送不同类型消息>一文中,消息机制发送不同类型的信息还没有完全实现,在出现异常的时候,应该弹出吐司提示异常,代码如下: private ...
- service里面弹出对话框
如何在service里面弹出对话框先给一个需求:需要在service里面监听短信的接收,如果接收到短信了,弹出一个dialog来提示用户打开. 看看效果图:(直接在主桌面上弹出) service中弹出 ...
随机推荐
- VIJOS P1647 不差钱 SBT
[描述] 同学们一起看了小品<不差钱>,LX神突发奇想,想刁难一下十八居士,他让十八居士模拟一下点菜的过程. [输入格式] 输入第一行为一个数price,表示价钱大于price的菜赵本山都 ...
- JavaBean-- 设置和取得属性
<jsp:setProperty>标签一共有4种使用方法: 自动匹配:<jsp:setProperty name="实例化对象的名称(id)" property= ...
- LayoutInflater 类的使用
转 http://yxwang0615.iteye.com/blog/1711147 一个Activity里如果直接用findViewById(),对应的是setConentView()的那个layo ...
- zf-关于平台的用户名密码的设置
比如说安徽桐城的用户名密码在哪张表里设置 桐城市人民统一电子政务平台是http://localhost:8088/tc/ptzwfw.action 这个链接 在zwfw_tc 数据库的 PT_LOGI ...
- Brain Network (easy)
Brain Network (easy) One particularly well-known fact about zombies is that they move and think terr ...
- iOS7以后的侧滑返回上一页
我们知道,iOS7以后,导航控制器默认带了侧滑返回功能,但是仅限于屏幕边缘.而且在你自定义leftBarButtonItem等之后侧滑效果就会消失.这种问题怎么解决呢? 首先,我们先来看看系统的这种手 ...
- HDU 5521 Meeting
2015 ACM / ICPC 沈阳站现场赛 M题 最短路 设置N+M个节点,前N个节点是Block,后M个节点是Set,每一组Set中的点向该Set连边,从1和n开始分别求最短路.注意爆int. # ...
- 基于Hibernate注解的解读
一.综述 目前为止项目用到的实体类关系有3种: 单向一对多 单向多对一 双向一对多(双向多对一) 二.说明 @Entity --注释声明该类为持久类.将一个Javabean类声明为一 个实体的数据库表 ...
- 深究Xcode的bitcode设置
深究Xcode的bitcode设置 转发至:http://www.jianshu.com/p/f42a33f5eb61 前言 做iOS开发的朋友们都知道,目前最新的Xcode7,新建项目默认就打开了b ...
- Extjs4 up 和down的用法
Extjs4.x中,每个组件都新增加了两个方法up()和down()方法.这两个方法都是用来获取组件的,下面我们来看下up()方法和down()方法的官方解释. Extjs4.x中,新增加了两个方法u ...