在Android中,启动一个对话框有三种方式:

1、定义一个新的activity,并将其主题设置为对话框风格

2、使用AlertDialog类,并且显示它

3、使用 Android的Dialog类的子类,并且显示它

现在学习AlertDialog.Builder创建各种形式的对话框。

首先,看看启动界面如下:

用土司来显示效果,因为多次用到,所以将其抽象为一个方法。

  1. protected void showToast(String string) {
  2. Toast.makeText(this, string, Toast.LENGTH_SHORT).show();
  3. }

1、点击第一个按钮后,出现如下对话框:

对于这个对话框,我们用到了AlertDialog.Builder类的几个方法:

setTitle:设置标题

setIcon:设置图标

setMessage:设置文本

setPositiveButton:设置第一个按钮

setNeutralButton:第二个按钮

setNegativeButton:第三个按钮

本段代码如下:

  1. public void onClick(View v) {
  2. switch (v.getId()) {
  3. case R.id.button1:
  4. new AlertDialog.Builder(this)
  5. .setTitle("这是一个最简单的对话框")
  6. .setIcon(R.drawable.img1)
  7. .setMessage("你好!!!")
  8. .setPositiveButton("开始", new DialogInterface.OnClickListener() {
  9. @Override
  10. public void onClick(DialogInterface dialog, int which) {
  11. DialogActivity.this.showToast("你点击了开始按钮      "+ which);
  12. }
  13. })
  14. .setNeutralButton("暂停", new DialogInterface.OnClickListener() {
  15. @Override
  16. public void onClick(DialogInterface dialog, int which) {
  17. DialogActivity.this.showToast("你点击了暂停按钮      "+ which);
  18. }
  19. })
  20. .setNegativeButton("退出", new DialogInterface.OnClickListener() {
  21. @Override
  22. public void onClick(DialogInterface dialog, int which) {
  23. DialogActivity.this.showToast("你点击了退出按钮 " + which);
  24. }
  25. }).show();
  26. break;

2、第二个对话框效果如下图

 

对于这个对话框,我们用到了这个方法

setItem(),即将setMessage改成这个方法就可以了。

代码如下:其中items是一个成员变量。final String[] items = {"开始","暂停","退出"};

  1. case R.id.button2:
  2. new AlertDialog.Builder(this)
  3. .setTitle("选项列表对话框")
  4. .setIcon(R.drawable.img2)
  5. //items的第一个参数也可以接受itemID,所以可写在xml文件中
  6. .setItems(items, new DialogInterface.OnClickListener() {
  7. @Override
  8. public void onClick(DialogInterface dialog, int which) {
  9. DialogActivity.this.showToast("你点击了按钮 " + items[which]);
  10. }
  11. }).show();
  12. break;

3、第三个对话框:

setSingleChoiceItem,设置单选列表对话框

代码如下:

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

4、第四个对话框:

主要用到了方法:

setMultiChoiceItems

代码如下:

  1. case R.id.button4:
  2. new AlertDialog.Builder(this)
  3. .setTitle("你的爱好有:")
  4. .setIcon(R.drawable.img3)
  5. .setMultiChoiceItems(R.array.string_array_name, null, new DialogInterface.OnMultiChoiceClickListener() {
  6. @Override
  7. public void onClick(DialogInterface dialog, int which, boolean isChecked) {
  8. String[] array = DialogActivity.this.getResources().getStringArray(R.array.string_array_name);
  9. String str;
  10. if(isChecked) {
  11. number++;
  12. }else {
  13. number--;
  14. }
  15. DialogActivity.this.showToast(array[which] + (isChecked ?" 选中了":" 取消了") );
  16. }
  17. })
  18. .setPositiveButton("确定", new DialogInterface.OnClickListener() {
  19. @Override
  20. public void onClick(DialogInterface dialog, int which) {
  21. DialogActivity.this.showToast("你一共选择了      "+ number + "项");
  22. }
  23. }).show();
  24. break;

这次,并没有直接用数组,而是在strings.xml中定义的一个数组资源

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3. <string-array  name="string_array_name">
  4. <item>健美操</item>
  5. <item>跳舞</item>
  6. <item>跑步</item>
  7. </string-array>
  8. </resources>

5、第5个对话框:

setView(view)方法来显示登录框。接受的参数为View(view,editText的组合),以LayoutInflater来实现。

要得到LayoutInflater(布局泵),只需要调用

LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

我们用inflater .inflater()用来找layout下xml布局文件,并且实例化。

类似于findVIewbyID,区别是一个得到整个布局,一个得到单个的组件。

代码如下:

  1. case R.id.button5:
  2. LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  3. View view = inflater.inflate(R.layout.dialog, null);
  4. new AlertDialog.Builder(this)
  5. .setTitle("登陆框")
  6. .setIcon(R.drawable.img4)
  7. .setView(view)
  8. .setPositiveButton("确定", new DialogInterface.OnClickListener() {
  9. @Override
  10. public void onClick(DialogInterface dialog, int which) {
  11. DialogActivity.this.showToast("正在登录,请稍后。。。");
  12. }
  13. }).show();

res/layout/dialog.xml布局为两个TextView,两个EditText,如下:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. android:orientation="vertical">
  7. <TextView
  8. android:layout_width="wrap_content"
  9. android:layout_height="wrap_content"
  10. android:text="账号"
  11. />
  12. <EditText
  13. android:layout_width="fill_parent"
  14. android:layout_height="wrap_content"
  15. android:id="@+id/username"
  16. />
  17. <TextView
  18. android:layout_width="wrap_content"
  19. android:layout_height="wrap_content"
  20. android:text="密码"
  21. />
  22. <EditText
  23. android:layout_width="fill_parent"
  24. android:layout_height="wrap_content"
  25. android:id="@+id/password"
  26. />
  27. </LinearLayout>

【转】http://blog.csdn.net/kuangc2008/article/details/6358915

安卓弹出对话框——AlertDialog(二)的更多相关文章

  1. 安卓弹出对话框——Alertdialog

    在Android开发当中,在界面上弹出一个Dialog对话框使我们经常需要做的,本篇随笔将详细的讲解Dialog对话框这个概念,包括定义不同样式的对话框. 一.Dialog 我们首先来看看androi ...

  2. 安卓弹出对话框——Alertdialog(一)

    首先看各种样式的对话框: 我们看到,Dialog有很多的子类实现,所以我们要定义一个对话框,使用其子类来实例化一个即可,而不要直接使用Dialog这个父类来构造. 二.AlertDialog 今天我们 ...

  3. 【Andriod-AlertDialog控件】 弹出对话框AlertDialog用法

    Result: Code: import android.app.Activity; import android.app.AlertDialog; import android.content.Di ...

  4. AlertDialog.Builder弹出对话框

    在Android中,弹出对话框使用AlertDialog.Builder方法. new AlertDialog.Builder(MainActivity.this).setTitle("本机 ...

  5. ViewPagerWithImageDemo【ViewPager如何判断滑动到第一页和最后一页以及弹出对话框功能】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 记录viewpager滑动的时候弹出对话框的功能(关键功能是滑动弹出对话框后,隐藏对话框的时候当前页可以还原到原位置),顺便判断首页 ...

  6. Response.Write("<script>alert('弹出对话框!')</script>") 后跟Response.Redirect("page.aspx");不能弹出对话框,直接跳转页面了 如何解?

    Response.Write和Response.Redirect一起用的时候就会这样,write脚本和redirect脚本不能同时使用,这样不会执行脚本,最好使用ClientScript 改进方法: ...

  7. selenium移动div里面的滚动条,操作弹出对话框

    还是使用js来移动 首先要定位到这个元素 倾向于使用js来定位元素,输入下面的脚本,按下回车键,即可在调试页面看到对应的div块$("div.table-responsive") ...

  8. Android 手机卫士--弹出对话框

    在<Android 手机卫士--解析json与消息机制发送不同类型消息>一文中,消息机制发送不同类型的信息还没有完全实现,在出现异常的时候,应该弹出吐司提示异常,代码如下: private ...

  9. service里面弹出对话框

    如何在service里面弹出对话框先给一个需求:需要在service里面监听短信的接收,如果接收到短信了,弹出一个dialog来提示用户打开. 看看效果图:(直接在主桌面上弹出) service中弹出 ...

随机推荐

  1. Qt5:图片彩色键控,设置图片中指定颜色的像素为透明

    有图片 1.png 设置该图中的颜色为粉红色的像素为透明 QPixmap pix("1.png"); QBitmap mask= pix.createMaskFromColor(Q ...

  2. PHP无限极分类的几种方法

    导读:项目开发,经常栏目要做到无限极分类,几种方法PHP无限极分类的几种方法 复制代码 代码如下:namespace Util;class Category{static public functio ...

  3. sphinx multi valued filter

    publn_date is multi-valued <?php ini_set('memory_limit', '-1'); ini_set('max_execution_time', '10 ...

  4. 浅谈:html5和html的区别

    什么是html5呢? html5最先由WHATWG(Web 超文本应用技术工作组)命名的一种超文本标记语言,随后和W3C的xhtml2.0(标准)相结合,产生现在最新一代的超文本标记语言.可以简单点理 ...

  5. 安装apk时出现错误Failure [INSTALL_FAILED_DEXOPT]问题解决的方法

    在android4.0源码里面编译出来apk后,用adb install (或adb install -r 重装)安装时,报错[INSTALL_FAILED_DEXOPT]. xu@xu-PC:~$  ...

  6. 3个普通IO识别22个按键试验(转)

    源:http://www.amobbs.com/forum.php?mod=viewthread&tid=2243715 吸取各位前辈的经验,将之前二极管用量多的问题优化一下,目前不用二极管能 ...

  7. 【dp】 poj 1953

    用n个数字0或者1组成一个排列,要求每两个1不相邻,问有多少种排法 dp[n][0]记录n个连续数,结尾为0的不同排列数dp[n][1]记录第n个连续数,结尾为1的不同排列数 DP公式: dp[i][ ...

  8. 网页中如何用 CSS 设置打印分页符

    Word 中按 Ctrl + Enter 创建一个分页符,方便打印,其实网页中也可以,用 CSS 的 page-break-after:always;. <p>第 1 页</p> ...

  9. C语言实现按位循环左移和循环右移

    ror eax,cl ==> eax=(eax>>cl)+(eax<<(sizeof(eax)-cl)); rol eax,cl ==> eax=(eax<& ...

  10. [iOS]C语言技术视频-12-指针变量练习二(数组打印)

    下载地址: 链接: http://pan.baidu.com/s/1mg7ZwUW 密码: p8e6