开发者社区> 沧海一笑dj> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

【Android】对话框 AlertDialog

简介:
+关注继续查看

【Android】对话框 AlertDialog


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

 来源:http://blog.csdn.net/feng88724/article/details/6171450

API:

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

 

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

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

 

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

 


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


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

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

 

 

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

 

 

代码:

  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();   
 

 

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

 

 

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

 

代码:

  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.           
  19.         Button button = (Button)findViewById(R.id.b01);  
  20.         button.setText("对话框");  
  21.         button.setOnClickListener(new Button.OnClickListener(){  
  22.             @Override  
  23.             public void onClick(View v) {  
  24.                 //选项数组  
  25.                 String[] choices={"Facebook","Twitter"};  
  26.                 //Check判断数组,与选项对应  
  27.                 boolean[] chsBool = {true,false};  
  28.                  //包含多个选项及复选框的对话框  
  29.                 AlertDialog dialog = new AlertDialog.Builder(Lesson_02_Dia.this)  
  30.                          .setIcon(android.R.drawable.btn_star_big_on)  
  31.                          .setTitle("调查")  
  32.                          .setMultiChoiceItems(choices, chsBool, multiClick)  
  33.                          .setPositiveButton("Yes", onclick)  
  34.                          .setNegativeButton("No",  onclick).create();  
  35.                 dialog.show();  
  36.             }  
  37.               
  38.         });  
  39.     }  
  40.       
  41.     /** 
  42.      * 对话框复选框事件监听器 
  43.      */  
  44.     OnMultiChoiceClickListener multiClick = new OnMultiChoiceClickListener(){  
  45.         @Override  
  46.         public void onClick(DialogInterface dialog, int which, boolean isChecked) {  
  47.             Toast.makeText(Lesson_02_Dia.this"第"+(which+1)+"项,选中结果:"+isChecked,Toast.LENGTH_SHORT).show();  
  48.         }  
  49.           
  50.     };  
  51.       
  52.     /** 
  53.      * 对话框按钮点击事件监听器 
  54.      */  
  55.     OnClickListener onclick = new OnClickListener() {  
  56.         @Override  
  57.         public void onClick(DialogInterface dialog, int which) {  
  58.             switch (which) {  
  59.                 case Dialog.BUTTON_NEGATIVE:  
  60.                     Toast.makeText(Lesson_02_Dia.this"No..",  
  61.                             Toast.LENGTH_LONG).show();  
  62.                     break;  
  63.                 case Dialog.BUTTON_NEUTRAL:  
  64.                     Toast.makeText(Lesson_02_Dia.this"I don't know.",  
  65.                             Toast.LENGTH_LONG).show();  
  66.                     break;  
  67.                 case Dialog.BUTTON_POSITIVE:  
  68.                     Toast.makeText(Lesson_02_Dia.this"Yes!!",  
  69.                             Toast.LENGTH_LONG).show();  
  70.                     break;  
  71.             }  
  72.         }  
  73.     };  
  74. }  
 

 

说明已经写在注释中了。

 

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

 

代码:

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

 

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

 

 

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

 

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

  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>  
 

 

代码 : (也比较简单)

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

 

有问题欢迎大家交流。

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
对话框自动弹出软键盘_Android基础篇(Java)
对话框自动弹出软键盘_Android基础篇(Java)
0 0
Android物联网应用程序开发(智慧园区)—— 设置传感器阈值对话框界面
Android物联网应用程序开发(智慧园区)—— 设置传感器阈值对话框界面
0 0
Android 常见对话框的简单使用(提示信息对话框、单选多选对话框、自定义对话框)
Android 常见对话框的简单使用(提示信息对话框、单选多选对话框、自定义对话框)
0 0
【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 完整代码示例 | 申请权限 | 申请权限原理对话框 | 引导用户手动设置权限对话框 )(二)
【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 完整代码示例 | 申请权限 | 申请权限原理对话框 | 引导用户手动设置权限对话框 )(二)
0 0
【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 完整代码示例 | 申请权限 | 申请权限原理对话框 | 引导用户手动设置权限对话框 )(一)
【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 完整代码示例 | 申请权限 | 申请权限原理对话框 | 引导用户手动设置权限对话框 )(一)
0 0
【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 权限申请原理对话框操作回调接口 | 永久拒绝权限后引导设用户置权限 )
【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 权限申请原理对话框操作回调接口 | 永久拒绝权限后引导设用户置权限 )
0 0
Android--在非activity弹出Dialog对话框
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/80521795 需要在adapter类监听button点击事件弹出需要弹出一个系统级对话框,也就是这个对话框不论是在哪个活动,都可以弹出这个对话框。
1724 0
Android项目实战(三十二):圆角对话框Dialog
原文:Android项目实战(三十二):圆角对话框Dialog 前言:   项目中多处用到对话框,用系统对话框太难看,就自己写一个自定义对话框。         对话框包括:1、圆角         2、app图标 , 提示文本,关闭对话框的"确定"按钮   难点:1、对话框边框圆角显示 ...
610 0
android app在系统重启绕过USB授权对话框,自动获取USB权限
最近由于项目需要参考了很多关于不修改android源码情况下实现屏蔽USB授权对话框的博文,结合自身实践阐述给出细节的实现过程。
3823 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Android组件化实现
立即下载
蚂蚁聚宝Android秒级编译—— Freeline
立即下载
Android插件化:从入门到放弃
立即下载