文档章节

几种不同的Android Dialog

 等待流星
发布于 2015/02/25 09:42
字数 844
阅读 189
收藏 18

在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择。这些功能我们叫它Android Dialog对话框,在我们使用Android的过程中,我归纳了一下,Android Dialog的类型无非也就7种,下面我分别向大家介绍这7种Android Dialog对话框的使用方法,希望对大家能有所帮助。

1.该效果是当按返回按钮时弹出一个提示,来确保无误操作,采用常见的对话框样式。

创建dialog对话框方法代码如下:

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
protected void dialog() {
    AlertDialog.Builder builder = new Builder(Main. this );
    builder.setMessage( "确认退出吗?" );
    builder.setTitle( "提示" );
    builder.setPositiveButton( "确认" , new OnClickListener() {
     @Override
     public void onClick(DialogInterface dialog, int which) {
      dialog.dismiss();
      Main. this .finish();
     }
    });
    builder.setNegativeButton( "取消" , new OnClickListener() {
     @Override
     public void onClick(DialogInterface dialog, int which) {
      dialog.dismiss();
     }
    });
    builder.create().show();
   }

在onKeyDown(int keyCode, KeyEvent event)方法中调用此方法

?

1
2
3
4
5
6
public boolean onKeyDown( int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0 ) {
     dialog();
    }
    return false ;
   }

2.改变了对话框的图表,添加了三个按钮

创建dialog的方法代码如下:

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Dialog dialog = new AlertDialog.Builder( this ).setIcon(
       android.R.drawable.btn_star).setTitle( "喜好调查" ).setMessage(
       "你喜欢李连杰的电影吗?" ).setPositiveButton( "很喜欢" ,
       new OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
         // TODO Auto-generated method stub          Toast.makeText(Main. this , "我很喜欢他的电影。" ,
           Toast.LENGTH_LONG).show();
        }
       }).setNegativeButton( "不喜欢" , new OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
       // TODO Auto-generated method stub        Toast.makeText(Main. this , "我不喜欢他的电影。" , Toast.LENGTH_LONG)
         .show();
      }
     }).setNeutralButton( "一般" , new OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
       // TODO Auto-generated method stub        Toast.makeText(Main. this , "谈不上喜欢不喜欢。" , Toast.LENGTH_LONG)
         .show();
      }
     }).create();
     dialog.show();

3.信息内容是一个简单的View类型

创建dialog方法的代码如下:

?

1
2
3
4
new AlertDialog.Builder( this ).setTitle( "请输入" ).setIcon(
       android.R.drawable.ic_dialog_info).setView(
       new EditText( this )).setPositiveButton( "确定" , null )
       .setNegativeButton( "取消" , null ).show();

4.信息内容是一组单选框

创建dialog方法的代码如下:

?

1
2
3
4
new AlertDialog.Builder( this ).setTitle( "复选框" ).setMultiChoiceItems(
       new String[] { "Item1" , "Item2" }, null , null )
       .setPositiveButton( "确定" , null )
       .setNegativeButton( "取消" , null ).show();

5.信息内容是一组多选框

创建dialog方法的代码如下:

?

1
2
3
4
5
6
7
8
new AlertDialog.Builder( this ).setTitle( "单选框" ).setIcon(
       android.R.drawable.ic_dialog_info).setSingleChoiceItems(
       new String[] { "Item1" , "Item2" }, 0 ,
       new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
         dialog.dismiss();
        }
       }).setNegativeButton( "取消" , null ).show();

6.信息内容是一组简单列表项

创建dialog的方法代码如下:

?

1
2
3
new AlertDialog.Builder( this ).setTitle( "列表框" ).setItems(
       new String[] { "Item1" , "Item2" }, null ).setNegativeButton(
       "确定" , null ).show();

7.信息内容是一个自定义的布局

dialog布局文件代码如下:

?

1
2
3
4
5
6
7
8
9
10
11
12
<? xml version = "1.0" encoding = "utf-8" ?>
  
  < LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
   android:layout_height = "wrap_content" android:layout_width = "wrap_content"
   android:background = "#ffffffff" android:orientation = "horizontal"
   android:id = "@+id/dialog" >
   < TextView android:layout_height = "wrap_content"
     android:layout_width = "wrap_content"
    android:id = "@+id/tvname" android:text = "姓名:" />
   < EditText android:layout_height = "wrap_content"
    android:layout_width = "wrap_content" android:id = "@+id/etname" android:minWidth = "100dip" />
  </ LinearLayout >

创建dialog方法的代码如下:

?

1
2
3
4
5
6
LayoutInflater inflater = getLayoutInflater();
     View layout = inflater.inflate(R.layout.dialog,
       (ViewGroup) findViewById(R.id.dialog));
     new AlertDialog.Builder( this ).setTitle( "自定义布局" ).setView(layout)
       .setPositiveButton( "确定" , null )
       .setNegativeButton( "取消" , null ).show();

好了,以上7种Android dialog对话框的使用方法就介绍到这里了,基本都全了,如果大家在android开发过程中遇到dialog的时候就可以拿出来看看。

另外注,本文参考文章:
http://android.tgbus.com/Android/tutorial/201107/359812.shtml

本文转载自:http://www.oschina.net/question/54100_32486

共有 人打赏支持
粉丝 5
博文 78
码字总数 10995
作品 0
崇明
私信 提问
加载中

评论(1)

疯华整猫
很久不这么用了
Android中的各种Dialog

下面是自己总结的Android常用的几种Dialog: 1.AlertDialog android中功能最丰富,用途最广的对话框。 // 1 创建一个Builder AlertDialog.Builder builder = new AlertDialog.Builder(this)...

Simpleness
2012/06/13
0
1
[Android] Dialog--onPrepareDialog()和onCreateDialog

Activities提供了一种方便管理的创建、保存、回复的对话框机制,例如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog(int), dismissDialog(int)等方法,如果使用这些方法的...

枫兮兮
2014/03/25
0
0
View not attached to window manager

今天在写程序中遇到如下问题,如此怪异,在网上找了很多,终于解决了问题: java.lang.IllegalArgumentException: View not attached to window manager 解决方法: 在调用系统相机拍照相片后...

刘遇安
2013/08/29
0
0
【Android】Dialog从下往上弹起(Dialog全屏,模态显示)

public class MyDialog extends Dialog implements android.view.View.OnClickListener{ private Button cancel;Context context;View localView;private RelativeLayout clearallpan; prote......

少年追梦
2015/03/17
0
0
android加载框效果《IT蓝豹》

android加载框效果 android加载框效果,本例子有几种效果弹出dialog,本例子主要自定义SVProgressHUD 类, 本例子来源:https://github.com/saiwu-bigkoo/Android-SVProgressHUD 主要代码如下...

抉择很难
2015/10/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Mariadb二进制包安装,Apache安装

安装mariadb 下载二进制包并解压 [root@test-a src]# wget https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.t......

野雪球
今天
3
0
ConcurrentHashMap 高并发性的实现机制

ConcurrentHashMap 的结构分析 为了更好的理解 ConcurrentHashMap 高并发的具体实现,让我们先探索它的结构模型。 ConcurrentHashMap 类中包含两个静态内部类 HashEntry 和 Segment。HashEnt...

TonyStarkSir
今天
3
0
大数据教程(7.4)HDFS的java客户端API(流处理方式)

博主上一篇博客分享了namenode和datanode的工作原理,本章节将继前面的HDFS的java客户端简单API后深度讲述HDFS流处理API。 场景:博主前面的文章介绍过HDFS上存的大文件会成不同的块存储在不...

em_aaron
昨天
4
0
聊聊storm的window trigger

序 本文主要研究一下storm的window trigger WindowTridentProcessor.prepare storm-core-1.2.2-sources.jar!/org/apache/storm/trident/windowing/WindowTridentProcessor.java public v......

go4it
昨天
7
0
CentOS 生产环境配置

初始配置 对于一般配置来说,不需要安装 epel-release 仓库,本文主要在于希望跟随 RHEL 的配置流程,紧跟红帽公司对于服务器的配置说明。 # yum update 安装 centos-release-scl # yum ins...

clin003
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部