【转】【Android】对话框 AlertDialog -- 不错不错

原文网址:http://blog.csdn.net/feng88724/article/details/6171450

本讲介绍一下Android基本组件:对话框AlertDialog。

API:

java.lang.Object
   ? android.app.AlertDialog.Builder

使用AlertDialog.Builder创建对话框需要了解以下几个方法:

  • setTitle :为对话框设置标题
  • setIcon :为对话框设置图标
  • setMessage:为对话框设置内容
  • setView : 给对话框设置自定义样式
  • setItems :设置对话框要显示的一个list,一般用于显示几个命令时。
  • setMultiChoiceItems :用来设置对话框显示一系列的复选框。
  • setNeutralButton    :
  • setPositiveButton   :给对话框添加"Yes"按钮
  • setNegativeButton :对话框添加"No"按钮
  • create : 创建对话框
  • show :显示对话框

下面我们来看一下最简单对话框。

这个对话框只是简单的显示内容,使用默认图标,没有按钮,不多说,贴代码:

[java] view plain copy

print?

  1. new AlertDialog.Builder(Lesson_01_Pic.this).setTitle("提示标题").setMessage("这是提示内容").show();

(Lesson_02_Dia是类名,请换成自己的!!)

下面我们为这个对话框加个按钮,效果:

代码:

[java] view plain copy

print?

  1. new AlertDialog.Builder(Lesson_01_Pic.this)
  2. .setTitle("这是标题")
  3. .setMessage("这是提示内容")
  4. .setPositiveButton("确定",
  5. new DialogInterface.OnClickListener(){
  6. public void onClick(DialogInterface dialoginterface, int i){
  7. //按钮事件
  8. Toast.makeText(Lesson_01_Pic.this, "确定",Toast.LENGTH_LONG).show();
  9. }
  10. }).show();

添加按钮时,需要同时为该按钮指定监听器。

下面,我们修改一个图标,添加两个按钮,同时显示多个选项,先看下效果:

代码:

[c-sharp] view plain copy

print?

  1. package com.yfz;
  2. import android.app.Activity;
  3. import android.app.AlertDialog;
  4. import android.app.Dialog;
  5. import android.content.DialogInterface;
  6. import android.content.DialogInterface.OnClickListener;
  7. import android.content.DialogInterface.OnMultiChoiceClickListener;
  8. import android.os.Bundle;
  9. import android.view.View;
  10. import android.widget.Button;
  11. import android.widget.Toast;
  12. public class Lesson_02_Dia extends Activity {
  13. /** Called when the activity is first created. */
  14. @Override
  15. public void onCreate(Bundle savedInstanceState) {
  16. super.onCreate(savedInstanceState);
  17. setContentView(R.layout.main);
  18. Button button = (Button)findViewById(R.id.b01);
  19. button.setText("对话框");
  20. button.setOnClickListener(new Button.OnClickListener(){
  21. @Override
  22. public void onClick(View v) {
  23. //选项数组
  24. String[] choices={"Facebook","Twitter"};
  25. //Check判断数组,与选项对应
  26. boolean[] chsBool = {true,false};
  27. //包含多个选项及复选框的对话框
  28. AlertDialog dialog = new AlertDialog.Builder(Lesson_02_Dia.this)
  29. .setIcon(android.R.drawable.btn_star_big_on)
  30. .setTitle("调查")
  31. .setMultiChoiceItems(choices, chsBool, multiClick)
  32. .setPositiveButton("Yes", onclick)
  33. .setNegativeButton("No",  onclick).create();
  34. dialog.show();
  35. }
  36. });
  37. }
  38. /**
  39. * 对话框复选框事件监听器
  40. */
  41. OnMultiChoiceClickListener multiClick = new OnMultiChoiceClickListener(){
  42. @Override
  43. public void onClick(DialogInterface dialog, int which, boolean isChecked) {
  44. Toast.makeText(Lesson_02_Dia.this, "第"+(which+1)+"项,选中结果:"+isChecked,Toast.LENGTH_SHORT).show();
  45. }
  46. };
  47. /**
  48. * 对话框按钮点击事件监听器
  49. */
  50. OnClickListener onclick = new OnClickListener() {
  51. @Override
  52. public void onClick(DialogInterface dialog, int which) {
  53. switch (which) {
  54. case Dialog.BUTTON_NEGATIVE:
  55. Toast.makeText(Lesson_02_Dia.this, "No..",
  56. Toast.LENGTH_LONG).show();
  57. break;
  58. case Dialog.BUTTON_NEUTRAL:
  59. Toast.makeText(Lesson_02_Dia.this, "I don‘t know.",
  60. Toast.LENGTH_LONG).show();
  61. break;
  62. case Dialog.BUTTON_POSITIVE:
  63. Toast.makeText(Lesson_02_Dia.this, "Yes!!",
  64. Toast.LENGTH_LONG).show();
  65. break;
  66. }
  67. }
  68. };
  69. }

说明已经写在注释中了。

下面再介绍一种比较常用的式样,如图:

代码:

[java] view plain copy

print?

  1. @Override
  2. public void onCreate(Bundle savedInstanceState) {
  3. super.onCreate(savedInstanceState);
  4. setContentView(R.layout.main);
  5. Button button = (Button)findViewById(R.id.b01);
  6. button.setText("对话框");
  7. button.setOnClickListener(new Button.OnClickListener(){
  8. @Override
  9. public void onClick(View v) {
  10. //选项数组
  11. String[] choices={"新浪微博","校内","街旁"};
  12. //包含多个选项的对话框
  13. AlertDialog dialog = new AlertDialog.Builder(Lesson_02_Dia.this)
  14. .setIcon(android.R.drawable.btn_star)
  15. .setTitle("分享")
  16. .setItems(choices, onselect).create();
  17. dialog.show();
  18. }
  19. });
  20. }
  21. /**
  22. * 选项的事件监听器
  23. */
  24. OnClickListener onselect = new OnClickListener() {
  25. @Override
  26. public void onClick(DialogInterface dialog, int which) {
  27. // TODO Auto-generated method stub
  28. switch (which) {
  29. case 0:
  30. Toast.makeText(Lesson_02_Dia.this, "您选择了新浪微博.",Toast.LENGTH_SHORT).show();
  31. break;
  32. case 1:
  33. Toast.makeText(Lesson_02_Dia.this, "您选择了校内",Toast.LENGTH_SHORT).show();
  34. break;
  35. case 2:
  36. Toast.makeText(Lesson_02_Dia.this, "您选择了街旁",Toast.LENGTH_SHORT).show();
  37. break;
  38. }
  39. }
  40. };

好了,今天就写到这,改天写一下,如果在弹出框中做一个登陆界面。

继续补充...先上图...

页面login.xml: 示例写的比较简单,布局大家可以自己完善、修改。

[xhtml] view plain copy

print?

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <TableLayout
  3. android:id="@+id/widget36"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. android:orientation="vertical"
  7. xmlns:android="http://schemas.android.com/apk/res/android"
  8. >
  9. <TextView
  10. android:id="@+id/widget37"
  11. android:layout_width="wrap_content"
  12. android:layout_height="wrap_content"
  13. android:text="用户名:"
  14. >
  15. </TextView>
  16. <EditText
  17. android:id="@+id/widget38"
  18. android:layout_width="wrap_content"
  19. android:layout_height="wrap_content"
  20. android:text=""
  21. android:textSize="18sp"
  22. >
  23. </EditText>
  24. <TextView
  25. android:id="@+id/widget39"
  26. android:layout_width="wrap_content"
  27. android:layout_height="wrap_content"
  28. android:text="密码:"
  29. >
  30. </TextView>
  31. <EditText
  32. android:id="@+id/widget40"
  33. android:layout_width="wrap_content"
  34. android:layout_height="wrap_content"
  35. android:text=""
  36. android:textSize="18sp"
  37. >
  38. </EditText>
  39. </TableLayout>

代码 : (也比较简单)

[c-sharp] view plain copy

print?

  1. LayoutInflater factory = LayoutInflater.from(Lesson_02_Dia.this);
  2. //获得自定义对话框
  3. View view = factory.inflate(R.layout.login, null);
  4. AlertDialog dialog02 = new AlertDialog.Builder(Lesson_02_Dia.this)
  5. .setIcon(android.R.drawable.btn_star)
  6. .setTitle("登录")
  7. .setView(view)
  8. .setPositiveButton("Yes", onclick)
  9. .setNegativeButton("No",  onclick).create();
  10. dialog02.show();

有问题欢迎大家交流。

时间: 2024-08-28 02:05:49

【转】【Android】对话框 AlertDialog -- 不错不错的相关文章

Android 对话框 (AlertDialog)

Android 提供了 AlertDialog 类可通过其内部类 Builder 轻松创建对话框窗口,但是没法对这个对话框窗口进行定制,为了修改 AlertDialog 窗口显示的外观,解决的办法就是创建一个指定的 AlertDialog 和 AlertDialog.Builder 类. 定义外观 我们希望将上面默认的对话框外观修改为如下图所示的新对话框风格: 该对话框将支持下面特性: 可从资源或者字符串直接指定对话框标题 可从资源.字符串和自定义布局来设置对话框内容 可设置按钮和相应的事件处理

Android.对话框(AlertDialog/Toast/Snackbar)

1.资料: 1.1.Android提醒微技巧,你真的了解Dialog.Toast和Snackbar吗? - CSDN博客.html(https://blog.csdn.net/guolin_blog/article/details/51336415) 1.2.Android界面设计之对话框--定制Toast.AlertDialog - 杰瑞教育 - 博客园.html(https://www.cnblogs.com/jerehedu/p/4308718.html) 2. 3. 4. 5. 原文地址

【转】Android详细的对话框AlertDialog.Builder使用方法

Android详细的对话框AlertDialog.Builder使用方法 我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等方式,重写我们自己的对话框.当然,这也是不失为一个不错的解决方式,但是一般的情况却是这样,我们重写的对话框,也许只在一个特定的地方会用到,为了这一次的使用,而去创建一个新类,往往有点杀鸡用牛刀的感觉,甚至会对我们的程序增加不必

Android对话框(一)AlertDialog

最近在做项目,小组几个回了家.界面暂时没人做,用到自定义对话框只能临时去学.现在把对话框的相关整理. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layou

11.Android之常用对话框AlertDialog学习

(1)首先我们写个简单的AlertDialog对话框,要创建一个AlertDialog,就要用到AlertDialog.Builder中的create()方法,然后创建对话框可以设置对话框的属性,比如设置标题.图标.内容等等. 修改下MainActivity.java方法(Android Studio工具下): 1 package com.example.administrator.dialog1; 2 3 import android.app.Activity; 4 import androi

android中提示&amp;对话框----AlertDialog

AlertDialog(对话框) 一.对话框的基本使用流程 step1:创建AlertDialog.Buider; step2:调用setIcon()设置图标,setTitle()或者setCustomerTitle设置标题 step3:设置对话框的内容setMessage()还有其他方式: step4:setPosition/Negative/NaturalButton设置:确定.取消.中立 step5:调用create()方法创建这个对象,在调用show()方法将对话框显示出来 二.几种常用

Android:AlertDialog对话框

1.简单的ALertDialog: Dialog alertDialog = new AlertDialog.Builder(this) .setTitle("标题") .setMessage("内容") .setIcon(R.drawable.ic_launcher).create(); alertDialog.show(); 2.带按钮的ALertDialog public class MainActivity extends Activity { okList

Android新手入门2016(11)--非阻塞对话框AlertDialog

写了这么久,看了这么多控件,好像都是静态的,一点交互都没有.这次要弄点弹框,活跃活跃. 这次继续用上一章的代码往下面写吧. 先看看图 还是前一章的九宫图,我把对话框绑定在第一个图标. 点击一下,可以看到如下: 再来看看代码吧 package com.fable.helloworld; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android

Android中 Alertdialog对话框点击消失?

在开发的时候遇到一个问题,就是一触摸对话框边缘外部,对话框会自动消失.这个问题很纠结啊,查找了一下发现从Android 4.0开始,AlertDialog有了变化,就是在触摸对话框边缘外部,对话框会自动消失,查了源码,找到解决办法: 研究其父类时候发现,可以设置这么一条属性,在AlertDialog.Builder.create()之后才能调用这两个方法 方法一: setCanceledOnTouchOutside(false);调用这个方法时,按对话框以外的地方不起作用.按返回键还起作用 方法