Android 创建Dialog


   android使用ShowDialog来显示一个Dialog, 当第一次调用ShowDialog时,会调用Activity的onCreateDialog方法,我们只需重写该方法,在该方法中创建一个Dialog.而 onPrepareDialog(int, Dialog)在Dialog显示时每次都会被调用。因此如果要动态修改dialog的信息,可以在该方法中实现.
下面给出使用实例:
Java代码   收藏代码
  1. showDialog(v.getId()); // 调用showDialog之后会回调onCreateDialog  


Java代码   收藏代码
  1. @Override  
  2.     protected Dialog onCreateDialog(int id) {  
  3.         // TODO Auto-generated method stub  
  4.         switch (id) {  
  5.             case R.id.btnTwobtn:  
  6.                 return CreateDialog();  
  7.             case R.id.btnthreebtn:  
  8.                 return CreateDialog3();  
  9.   
  10.             case R.id.btnInput:  
  11.                 return CreateDialogLogin();  
  12.   
  13.             case R.id.btnwait:  
  14.                 // 启动线程来关闭等待框  
  15.                 new Thread() {  
  16.   
  17.                     @Override  
  18.                     public void run() {  
  19.                         int i = 0;  
  20.                         while (i < 10) {  
  21.   
  22.                             try {  
  23.                                 Thread.sleep(1000);  
  24.                             }  
  25.                             catch (InterruptedException e) {  
  26.                                 // TODO Auto-generated catch block  
  27.                                 e.printStackTrace();  
  28.                             }  
  29.                             i++;  
  30.                         }  
  31.                         dismissDialog(R.id.btnwait);  
  32.                     }  
  33.                 }.start();  
  34.                 return CreateProcessDialog();  
  35.             case R.id.btnTimePicker:  
  36.                 return CreateTimePickerDialog();  
  37.             default:  
  38.                 return CreateDialog();  
  39.         }  
  40.   
  41.     }  
  42.   
  43.     // 第一个按钮  
  44.     private Dialog CreateDialog() {  
  45.   
  46.         AlertDialog.Builder builder = new Builder(this);  
  47.         builder.setTitle("dialog test");  
  48.         builder.setMessage("点击按钮测试一下吧,看看title的变化");  
  49.         builder.setPositiveButton("ok"new DialogInterface.OnClickListener() {  
  50.   
  51.             @Override  
  52.             public void onClick(DialogInterface dialog, int which) {  
  53.                 // TODO Auto-generated method stub  
  54.                 setTitle("click ok");  
  55.             }  
  56.   
  57.         });  
  58.         builder.setNegativeButton("cancel",  
  59.                 new DialogInterface.OnClickListener() {  
  60.   
  61.                     @Override  
  62.                     public void onClick(DialogInterface dialog, int which) {  
  63.                         // TODO Auto-generated method stub  
  64.                         setTitle("click cancel");  
  65.                     }  
  66.                 });  
  67.   
  68.         return builder.create();  
  69.     }  
  70.   
  71.     // 第2个按钮  
  72.     private Dialog CreateDialog3() {  
  73.   
  74.         AlertDialog.Builder builder = new Builder(this);  
  75.         builder.setTitle("dialog test");  
  76.         builder.setMessage("点击按钮测试一下吧,看看3个按钮对title的变化");  
  77.         builder.setPositiveButton("ok"new DialogInterface.OnClickListener() {  
  78.   
  79.             @Override  
  80.             public void onClick(DialogInterface dialog, int which) {  
  81.                 // TODO Auto-generated method stub  
  82.                 setTitle("click ok");  
  83.             }  
  84.   
  85.         });  
  86.         builder.setNegativeButton("cancel",  
  87.                 new DialogInterface.OnClickListener() {  
  88.   
  89.                     @Override  
  90.                     public void onClick(DialogInterface dialog, int which) {  
  91.                         // TODO Auto-generated method stub  
  92.                         setTitle("click cancel");  
  93.                     }  
  94.                 });  
  95.         builder.setNeutralButton("详细"new DialogInterface.OnClickListener() {  
  96.   
  97.             @Override  
  98.             public void onClick(DialogInterface dialog, int which) {  
  99.                 // TODO Auto-generated method stub  
  100.                 setTitle("click detail");  
  101.             }  
  102.         });  
  103.         return builder.create();  
  104.     }  
  105.   
  106.     // 第3个按钮 弹出输入框  
  107.     private Dialog CreateDialogLogin() {  
  108.   
  109.         AlertDialog.Builder builder = new Builder(this);  
  110.         // 加载layout文件  
  111.         LayoutInflater inflater = LayoutInflater.from(this);  
  112.         View view = inflater.inflate(R.layout.logindialog, null);  
  113.         builder.setView(view);  
  114.         builder.setPositiveButton("ok"new DialogInterface.OnClickListener() {  
  115.   
  116.             @Override  
  117.             public void onClick(DialogInterface dialog, int which) {  
  118.                 // TODO Auto-generated method stub  
  119.                 setTitle("click ok");  
  120.             }  
  121.   
  122.         });  
  123.         builder.setNegativeButton("cancel",  
  124.                 new DialogInterface.OnClickListener() {  
  125.   
  126.                     @Override  
  127.                     public void onClick(DialogInterface dialog, int which) {  
  128.                         // TODO Auto-generated method stub  
  129.                         setTitle("click cancel");  
  130.                     }  
  131.                 });  
  132.         builder.setNeutralButton("详细"new DialogInterface.OnClickListener() {  
  133.   
  134.             @Override  
  135.             public void onClick(DialogInterface dialog, int which) {  
  136.                 // TODO Auto-generated method stub  
  137.                 setTitle("click detail");  
  138.             }  
  139.         });  
  140.         return builder.create();  
  141.     }  
  142.   
  143.     // 第4个按钮 等待框  
  144.     private Dialog CreateProcessDialog() {  
  145.         ProgressDialog dialog = new ProgressDialog(this);  
  146.         dialog.setMessage("正在运行,请等待...");  
  147.   
  148.         return dialog;  
  149.   
  150.     }  
  151.   
  152.     // 第5个按钮 时间选择框  
  153.     private Dialog CreateTimePickerDialog() {  
  154.         TimePickerDialog dialog = new TimePickerDialog(this0,  
  155.                 mTimeSetListener, 00false);  
  156.         return dialog;  
  157.   
  158.     }  
  159.   
  160.     private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() {  
  161.   
  162.         @Override  
  163.         public void onTimeSet(TimePicker view, int hourOfDay, int minute) {  
  164.             // TODO Auto-generated method stub  
  165.             int hour = hourOfDay;  
  166.             int minute1 = minute;  
  167.             Toast.makeText(getBaseContext(),  
  168.                     "You have selected : " + hour + ":" + minute1,  
  169.                     Toast.LENGTH_SHORT).show();  
  170.         }  
  171.     };  

运行结果如下:

 



 

 

 

 
如果我们想把一个Activity显示为一个Dialog形式,可以在androidManifest.xml中的activity的属性设为android:theme="@android:style/Theme.Dialog,伪装为dialog

Xml代码   收藏代码
  1. <activity android:name="DialogActivity" android:theme="@android:style/Theme.Dialog"></activity> 
转:http://yanweimin7.iteye.com/blog/994901
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值