关闭

Android-Dialog对话框全解

标签: Android-Dialog对话框普通对话框单选对话框多选对话框
208人阅读 评论(0) 收藏 举报
分类:

Android-Dialog对话框全解

1.概述

   学习 Toast的使用,包括其自定义

2.重点

  (1)对话框的实现
  (2)普通对话框
  (3)单选对话框
  (4)多选对话框
  (5)列表对话框
  (6)自定义布局对话框
  (7)Activity实现 对话框
  (8)DialogInterface.OnClickListener 处理返回值

3.普通对话框

  3.1 效果图


                                                                

   3.2 实现

    (1)实现确定按钮监听(DialogInterface.OnClickListener 
  1. //两个事件 : 确定监听  
  2.     class DialogSureClickListener implements DialogInterface.OnClickListener{  
  3.   
  4.         @Override  
  5.         public void onClick(DialogInterface dialog, int which) {  
  6.             // 判断 点击的是什么按钮  
  7.                 dialog.dismiss();  
  8.                 Toast.makeText(MainActivity.this,"点击了确定按钮",Toast.LENGTH_SHORT).show();  
  9.                 tv_result.setText("点击了确定按钮");  
  10.         }  
  11.           
  12.     } 
    (2)实现取消按钮监听(DialogInterface.OnClickListener 
  1. //取消监听  
  2.     class DialogCanelClickListener implements DialogInterface.OnClickListener{  
  3.   
  4.         @Override  
  5.         public void onClick(DialogInterface dialog, int which) {  
  6.                  // 判断 点击的是什么按钮  
  7.                 dialog.dismiss();  
  8.                 Toast.makeText(MainActivity.this,"点击了取消按钮",Toast.LENGTH_SHORT).show();  
  9.                 tv_result.setText("点击了取消按钮");  
  10.               
  11.         }  
  12.           
  13.     } 
    (3)dialog 实现
  1. /** 
  2.      * 普通的dialog 
  3.      */  
  4.     private void ShowPuTongDialog(){  
  5.           
  6.         AlertDialog.Builder builder=new Builder(this);  
  7.         builder.setTitle("普通Dialog");  
  8.         builder.setIcon(R.drawable.img);  
  9.         builder.setMessage("Hi,我是 普通 Dialog");  
  10.         builder.setPositiveButton("确定",new DialogSureClickListener());  
  11.         builder.setNegativeButton("取消",new DialogCanelClickListener());  
  12.         AlertDialog dialog= builder.create();  
  13.         dialog.show();  
  14.           
  15.     }  
  16.      

4.单选按钮对话框

    4.1 效果图

                                                                

    4.2实现

      (1)准备数据源
  1. //准备数据源  
  2. private String[] items={"儿童","少年","青年","成年","大叔","老头"};  


      (2)实现点击监听(DialogInterface.OnClickListener 
  1. //监听事件  
  2.     class DialogsingleClickListener implements DialogInterface.OnClickListener{  
  3.   
  4.         @Override  
  5.         public void onClick(DialogInterface dialog, int which) {  
  6.             // 判断 单选按钮  
  7.             Toast.makeText(MainActivity.this,items[which],Toast.LENGTH_SHORT).show();  
  8.             tv_result.setText(items[which]);  
  9.             dialog.dismiss();  
  10.         }  
  11.           
  12.     }  
  13.      
      (3)dialog实现

  1. /** 
  2.      * 单选按钮对话框 
  3.      */  
  4.     private void ShowSingleDialog(){  
  5.           
  6.         AlertDialog.Builder builder=new Builder(this);  
  7.         builder.setTitle("单选按钮对话框");  
  8.         builder.setIcon(R.drawable.ic_launcher);  
  9.         builder.setSingleChoiceItems(items,0,new DialogsingleClickListener());  
  10.         AlertDialog dialog=builder.create();  
  11.         dialog.show();  
  12.     }  
  13.      

5.多选按钮对话框

    5.1 效果图

                                                                

    5.2 实现

    (1)准备数据源
  1. //数据源  
  2.     private String[] items1={"儿童","少年","青年","成年","大叔","老头"}; 
    (2)多选监听事件(DialogInterface.OnMultiChoiceClickListener
  1. //多选监听事件  
  2.     class DialogMuitlClickListener implements DialogInterface.OnMultiChoiceClickListener{  
  3.   
  4.         @Override  
  5.         public void onClick(DialogInterface dialog, int which, boolean isChecked) {  
  6.             // OnMultiChoiceClickListener  
  7.             if(isChecked){  
  8.                 Toast.makeText(MainActivity.this,items1[which],Toast.LENGTH_SHORT).show();  
  9.                 tv_result.setText(tv_result.getText().toString()+items1[which]);  
  10.             }  
  11.         }  
  12.     } 
    (3)按钮监听事件(DialogInterface.OnClickListener)
  1. // 确定 监听事件  
  2.     class DialogMuitlSureClickListener implements DialogInterface.OnClickListener{  
  3.   
  4.         @Override  
  5.         public void onClick(DialogInterface dialog, int which) {  
  6.             // 关闭 Dialog  
  7.             dialog.dismiss();  
  8.         }  
  9.           
  10.     } 
    (4)Dialog 实现
  1. /** 
  2.      * 多选按钮 对话框 
  3.      */  
  4.     private void ShowMuitlDialog(){  
  5.         AlertDialog.Builder builder=new Builder(this);  
  6.         builder.setTitle("多选按钮对话框");  
  7.         builder.setIcon(R.drawable.ic_launcher);  
  8.         builder.setMultiChoiceItems(items, null,new DialogMuitlClickListener());  
  9.         builder.setPositiveButton("确定",new DialogMuitlSureClickListener());  
  10.         AlertDialog dialog=builder.create();  
  11.         dialog.show();  
  12.     } 

6.列表对话框

   6.1 效果图

                                                                

   6.2 实现

        (1)准备数据源
  1. //设置数据源  
  2.     private String[] items2={"儿童","少年","青年","成年","大叔","老头"}; 
        (2)设置监听事件(DialogInterface.OnClickListener)
  1. // list 监听事件  
  2.     class DialoglistClickListener implements DialogInterface.OnClickListener{  
  3.   
  4.         @Override  
  5.         public void onClick(DialogInterface dialog, int which) {  
  6.               
  7.             Toast.makeText(MainActivity.this,items2[which],Toast.LENGTH_SHORT).show();  
  8.             tv_result.setText(items2[which]);  
  9.             // 关闭 Dialog  
  10.             dialog.dismiss();  
  11.         }  
  12.           
  13.     } 
        (3)Dialog实现
  1. /** 
  2.      * list 对话框实现 
  3.      */  
  4.     private void ShowListDialog(){  
  5.         AlertDialog.Builder builder=new Builder(this);  
  6.         builder.setTitle("list对话框");  
  7.         builder.setIcon(R.drawable.ic_launcher);  
  8.         builder.setItems(items2, new DialoglistClickListener());  
  9.         AlertDialog dialog=builder.create();  
  10.         dialog.show();  
  11.     }  
  12.      

7.自定义对话框

      7.1效果图

                                                               

    7.2 实现

    (1)新建Layout布局
             实现 一个图片,一个输入框,一个按钮
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:gravity="center"  
  6.     android:orientation="vertical" >  
  7.   
  8.     <ImageView  
  9.         android:id="@+id/imageView1"  
  10.         android:layout_width="match_parent"  
  11.         android:layout_height="wrap_content"  
  12.         android:src="@drawable/img" />  
  13.   
  14.     <EditText  
  15.         android:id="@+id/editText1"  
  16.         android:layout_width="match_parent"  
  17.         android:layout_height="wrap_content"  
  18.         android:ems="10" >  
  19.   
  20.         <requestFocus />  
  21.     </EditText>  
  22.   
  23.     <Button  
  24.         android:id="@+id/btn_tijiao"  
  25.         android:layout_width="match_parent"  
  26.         android:layout_height="wrap_content"  
  27.         android:text="提交数据" />  
  28.   
  29. </LinearLayout> 
    (2)Dialog实现
            这里也使用到了 将布局 转为 view对象 ,目前 有两种方法 可以将 Layout布局转 View对象;
  1. private EditText editText1;  
  2. private AlertDialog selfdialog;  
  3. /** 
  4.  * 自定义布局 的dialog 包括 取代 dialog中的值 
  5.  */  
  6. private void ShowSelfDialog(){  
  7.     //将 layout布局  转为 view对象  
  8.     LayoutInflater inflater=getLayoutInflater().from(this);  
  9.     View view=inflater.inflate(R.layout.dialog_layout,null);  
  10.       
  11.     AlertDialog.Builder builder=new Builder(this);  
  12.     builder.setTitle("自定义对话框");  
  13.     builder.setIcon(R.drawable.ic_launcher);  
  14.     builder.setView(view);  
  15.     selfdialog=builder.create();  
  16.     selfdialog.show();  
  17.       
  18.     //取得 dialog中的值  
  19.     Button btn_tijiao=(Button) view.findViewById(R.id.btn_tijiao);  
  20.     editText1=(EditText) view.findViewById(R.id.editText1);  
  21.     btn_tijiao.setOnClickListener(new OnClickListener() {  
  22.           
  23.         @Override  
  24.         public void onClick(View v) {  
  25.             // 取得 dialog 中的值  
  26.             tv_result.setText("自定义 Dialog中取得值:"+editText1.getText().toString());  
  27.             selfdialog.dismiss();  
  28.         }  
  29.     });  
  30.       
  31.       
  32. }

8.Activity 对话框

  8.1效果图

         没有优化,就这样了!
                                                                

    8.2 实现

       (1)新建Activity 
       (2)设置主题
              打开 Androidmainfest.xml ,找到刚刚新建的Activity 设置主题 theme
  1. <activity  
  2.             android:name=".DialogActivity"  
  3.             android:theme="@android:style/Theme.Dialog"  
  4.             android:label="@string/title_activity_dialog" >  
  5.         </activity>  
      (3)设置布局 和 上面 自定义布局一样 (可以直接使用)
      (4)初始化控件 实现 按钮点击事件
                 这里说明一下,因为需要 回调 传值,故使用了 setResult ;
  1. class  btn_tijiaoClickListener implements OnClickListener{  
  2.   
  3.         @Override  
  4.         public void onClick(View v) {  
  5.             // 按钮点击事件 ,给 mainActivity 回传输入的值  
  6.             Intent intent=new Intent();  
  7.             intent.putExtra("data",edittext1.getText().toString());  
  8.             setResult(1,intent);  
  9.             //结束 Activity dialog  
  10.             finish();  
  11.         }  
  12.           
  13.     }  

       (5)MainActivity 重写 onActivityResult 回调 拿值
  1. /** 
  2.      * 重写 onActivityResult 方法 拿到 回调的值 
  3.      */  
  4.     @Override  
  5.     protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
  6.         //回调拿值  
  7.         if(resultCode==1&&requestCode==2){  
  8.             tv_result.setText(data.getStringExtra("data"));  
  9.         }  
  10.     }  
  11.      
       (6)启动使用 startActivityforResult () 方法
  1. Intent intent=new Intent(MainActivity.this,DialogActivity.class);  
  2.             startActivityForResult(intent, 2); 

9.demo 免积分下载

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:21548次
    • 积分:755
    • 等级:
    • 排名:千里之外
    • 原创:51篇
    • 转载:37篇
    • 译文:0篇
    • 评论:0条
    文章分类