zoukankan      html  css  js  c++  java
  • Android开发之使用AlertDialog创建对话框,单选框和多选框

    对话框:

    对话框的icon,title,message等都可以不设置。

    单选框和多选框与对话框勾选步骤基本上一致。

    对话框的构建步骤:

    1.使用AlertDialog类的内部类Builder类new 一个builder对象

    2.设置图标setIcon() ;                            builder.setIcon();

    3.设置title setTitle();                          builder.setTitle();

    4.设置Message  setMessage();             builder.setMessage();

    5.设置确定按钮  setPositiveButton() ;      builder.setPositiveButton()

    6.设置取消按钮   setNegativeButton();    builder.setNegativeButton()

    7.设置显示     show();                           builder.show();

    代码:

     1     public void click(View v) {
     2         AlertDialog.Builder builder = new AlertDialog.Builder(this);
     3         builder.setIcon(android.R.drawable.alert_dark_frame);
     4         builder.setTitle("鼻血俭朴");
     5         builder.setMessage("尹志平,请考虑好!!!");
     6         builder.setPositiveButton("确定", new OnClickListener() {
     7 
     8             @Override
     9             public void onClick(DialogInterface dialog, int which) {
    10                 Toast.makeText(MainActivity.this, "谢谢使用本软件,关闭", 0).show();
    11             }
    12         });
    13 
    14         builder.setNegativeButton("取消", new OnClickListener() {
    15 
    16             @Override
    17             public void onClick(DialogInterface dialog, int which) {
    18                 Toast.makeText(MainActivity.this, "没有子宫,肯定不成功", 0).show();
    19             }
    20         });
    21 
    22         builder.show();
    23     }

    单选框:

    注意:构建过程中,不可以使用setMessage()方法,否则会不显示选项列表。

    使用setSingleChoiceItems()方法设置单选

    Builder.setSingleChoiceItems(CharSequence[] items, int checkedItem, OnClickListener listener)

    参数:

    1.items:定义的单选选项数组

    2.checkedItem:默认被选中的选项。默认不选中为-1,选中数组第一个为0,选中数组第二个为1,选择数组第三个为2

    3.listener:侦听器

    1         builder.setSingleChoiceItems(items, -1, new OnClickListener() {
    2 
    3             @Override
    4             public void onClick(DialogInterface dialog, int which) {
    5                 Toast.makeText(MainActivity.this, "选择的是:" + items[which], 0)
    6                         .show();
    7                 dialog.dismiss();
    8             }
    9         });

    侦听器的onClick()方法的两个参数

    1.dialog:点击时触发的对话框

    2.which:被点击按钮的位置或者项目的位置

     

    代码:

     1     public void click1(View v) {
     2         AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
     3         builder.setIcon(android.R.drawable.alert_dark_frame);
     4         builder.setTitle("鼻血俭朴");
     5         final String[] items = new String[] { "女", "男" };
     6         builder.setSingleChoiceItems(items, -1, new OnClickListener() {
     7 
     8             @Override
     9             public void onClick(DialogInterface dialog, int which) {
    10                 Toast.makeText(MainActivity.this, "选择的是:" + items[which], 0)
    11                         .show();
    12                 dialog.dismiss();
    13             }
    14         });
    15         builder.show();
    16     }

    多选框:

    注意:构建过程中,不可以使用setMessage()方法,否则会不显示选项列表。

    使用setMultiChoiceItems()方法设置多选

    Builder.setMultiChoiceItems(CharSequence[] items, boolean[] checkedItems, OnMultiChoiceClickListener listener)
    参数:
    1.items:定义的多选选项的数组
    2.checkedItems:boolean[]数据记录多选选项数组中那个被选中,选中了为true,没有选中为false
    3.listener:侦听器,多选的侦听器为OnMultiChoiceClickListener
    1         builder.setMultiChoiceItems(items, checkedItems,
    2                 new OnMultiChoiceClickListener() {
    3 
    4                     @Override
    5                     public void onClick(DialogInterface dialog, int which,
    6                             boolean isChecked) {
    7                         checkedItems[which] = isChecked;
    8                     }
    9                 });

    侦听器的onClick()方法的两个参数

    1.dialog:点击时触发的对话框

    2.which:被点击按钮的位置或者项目的位置

    3.isChecked:点击某个选项,如果该选项之前没被选择,那么此时isChecked的值为true,不勾选则为false。

    代码:

     1     public void click2(View v) {
     2         AlertDialog.Builder builder = new AlertDialog.Builder(this);
     3         builder.setIcon(android.R.drawable.alert_dark_frame);
     4         builder.setTitle("请选择多个选项");
     5         final String[] items = new String[] { "貂蝉", "西施", "主管", "设计", "开发" };
     6         final boolean[] checkedItems = new boolean[] { false, false, false,
     7                 false, false };
     8         builder.setMultiChoiceItems(items, checkedItems,
     9                 new OnMultiChoiceClickListener() {
    10 
    11                     @Override
    12                     public void onClick(DialogInterface dialog, int which,
    13                             boolean isChecked) {
    14                         checkedItems[which] = isChecked;
    15                     }
    16                 });
    17         builder.setPositiveButton("确定", new OnClickListener() {
    18 
    19             @Override
    20             public void onClick(DialogInterface dialog, int which) {
    21 
    22                 String text = "";
    23                 for (int i = 0; i < items.length; i++) {
    24                     if (checkedItems[i]) {
    25                         text += items[i];
    26                     }
    27                 }
    28                 Toast.makeText(MainActivity.this, text, 0).show();
    29                 dialog.dismiss();
    30 
    31             }
    32         });
    33         builder.show();
    34     }

    AlartDialog按Back键的处理:

    可以通过代码设置:默认是true,就是说可以通过按back键取消了。

    builder.setCancelable(false);  //默认为true

    同时可以设置back键的监听,自定义动作

    1 builder.setOnCancelListener(new OnCancelListener() {
    2 
    3             @Override
    4             public void onCancel(DialogInterface dialog) {
    5                 //定义的操作
    6             }
    7         });
  • 相关阅读:
    koa学习
    nodejs工作大全
    《程序员周先生之前端开发面试题》
    使用vue技术应当使用的技术和兼容性选择
    IdentityServer4简单入门demo系列 (一)认证服务端
    IdentityServer4客户端获取Token的方法
    wpf 右键菜单的使用
    wpf 在用户控件里,关掉父级窗口
    EntityFramework集成Sqlite的详细步骤
    wpf DataGrid 里的列模版的值绑定
  • 原文地址:https://www.cnblogs.com/liyiran/p/5050687.html
Copyright © 2011-2022 走看看