• 系统组件:警告对话框AlertDialog(1)


     虽然AlertDialog类属于android.app.Dialog包下,不属于android.widget包下,但在Android中常被用于显示信息的一种组件,这里仍然将其看为和TextView、EditText等类似的UI组件。

    查阅Android文档可知AlertDialog类的定义:

      由上图可知AlertDialog类继承了Dialog,以及实现了DialogInterface接口。Dialog是很多对话框(如ProgressDialog,DatePickerDialog,TimePickerDialog)共同的父类,而DialogInterface则声明了在对话框上的一些监听事件,用于监听用户在对话框上的操作。

      Dialog类的定义:

      DialogInterface类的定义:

      创建AlertDialog一般是使用AlertDialog的内部类AlertDialog.Builder来创建,其中AlertDialog.Builder有很多重要的方法,用来设置AlertDialog的一些属性。

    AlertDialog.Builder的常用方法:

      1.setIcon(Drawable icon);设置对话框顶部显示的图标

          2.setIcon(int iconId);设置对话框顶部显示的图标

          3.setMessage(int messageId);设置对话框中间的内容显示

          4.setSingleChoiceItems(CharSequence[] items, int checkedItem, DialogInterface.OnClickListener listener);设置对话框单选数据项

          5.setMultiChoiceItems(CharSequence[] items, boolean[] checkedItems, DialogInterface.OnMultiChoiceClickListener listener);设置对话框复选数据项

          6.setView(View view);向对话框添加一个UI组件或者UI容器

          7.setAdapter(ListAdapter adapter, DialogInterface.OnClickListener listener);设置对话框的适配器

          8.setCancelable(boolean cancelable);设置当出现对话框时,是否能够点击对话框之外的区域,取消对话框

          9.setPositiveButton(CharSequence text, DialogInterface.OnClickListener listener);为对话框添加确认按钮,默认没有添加

          10.setNegativeButton(CharSequence text, DialogInterface.OnClickListener listener);为对话框添加取消按钮,默认没有添加

          11.setNeutralButton(CharSequence text, DialogInterface.OnClickListener listener);为对话框添加一般按钮

          12.create();返回值是一个AlertDialog的实例

    AlertDialog的常用方法:

        1.show();用来将对话框显示在界面

        2.dismiss();取消对话框的显示

    总结:AlertDialog的显示可分为三个区域,一是顶部的图标和标题,二是中间的正文内容,三是底部的确认按钮、取消按钮、普通按钮。

    注意:

      1.正文内容只能通过以下一种方法设置,若使用多种,只会出现先调用的方法(未充分测试==!),原因是它们设置的内容都是对同一块区域操作。

        setMessagesetSingleChoiceItemssetMultiChoiceItemssetViewsetAdapter

      2.在Android2.3.1平台下,三按钮的位置是相对固定的,分别置于最左侧,最右侧和居中,但在Android4.0平台下,setPositiveButton和setNegativeButton位置恰恰相反,分别置于最右侧和最左侧。(参考:http://blog.csdn.net/blue_fire2008/article/details/7193631)

    实例:界面有6个按钮,当点击不同按钮时,显示不同的对话框,初始界面如下图

    1.点击按钮时出现普通对话框

     源码如下:

    1 // 普通对话框
    2     public void showDialog1(View v) {
    3         AlertDialog.Builder builder = new AlertDialog.Builder(this);
    4         dialog1 = builder.setIcon(R.drawable.ic_launcher).setTitle("普通对话框")
    5                 .setMessage("普通对话框的内容").setPositiveButton("确定", null)
    6                 .setNegativeButton("取消", null).create();
    7         dialog1.show();
    8     }

    2.点击按钮时出现单选对话框

    源码如下:

     1 // 单选对话框
     2     public void showDialog2(View v) {
     3         AlertDialog.Builder builder = new AlertDialog.Builder(this);
     4         dialog2 = builder
     5                 .setIcon(R.drawable.ic_launcher)
     6                 .setTitle("单选对话框")
     7                 .setSingleChoiceItems(new String[] { "选择1", "选择2", "选择3" }, 0,
     8                         null).setNegativeButton("取消", null)
     9                 .setPositiveButton("确定", null).create();
    10 
    11         dialog2.show();
    12     }

    3.点击按钮时出现多选多话框

     源码如下:

     1 // 多选对话框
     2     public void showDialog3(View v) {
     3         AlertDialog.Builder builder = new AlertDialog.Builder(this);
     4         dialog3 = builder
     5                 .setIcon(R.drawable.ic_launcher)
     6                 .setTitle("多选对话框")
     7                 .setMultiChoiceItems(
     8                         new String[] { "多选一", "多选二", "多选三", "多选四", "多选五" },
     9                         new boolean[] { true, false, true, false, false }, null)
    10                 .setNegativeButton("取消", null).setPositiveButton("确定", null)
    11                 .create();
    12 
    13         dialog3.show();
    14     }

    4.点击按钮时出现简单的View对话框

    源码如下:

     1 // 简单的View对话框
     2     public void showDialog4(View v) {
     3         AlertDialog.Builder builder = new AlertDialog.Builder(this);
     4         dialog4 = builder.setIcon(R.drawable.ic_launcher)
     5                 .setTitle("简单的View对话框").setView(new EditText(this))
     6                 .setPositiveButton("确定", null).setNegativeButton("取消", null)
     7                 .create();
     8 
     9         dialog4.show();
    10     }

    5.点击按钮时出现自定义布局对话框

    源码如下:

     1 // 自定义布局对话框
     2     public void showDialog5(View v) {
     3         AlertDialog.Builder builder = new AlertDialog.Builder(this);
     4         View view = getLayoutInflater().inflate(R.layout.dialog_layout, null);
     5         dialog5 = builder.setIcon(R.drawable.ic_launcher).setTitle("自定义布局对话框")
     6                 .setView(view).setPositiveButton("确定", null)
     7                 .setNegativeButton("取消", null).create();
     8 
     9         dialog5.show();
    10     }

    简单看下5和6的代码:可以看到都是使用了同一个方法:setView(View view),这个方法的参数View既可以时一个UI控件,也可以是一个容器布局,然后再容器布局中可以添加许多组件。

    6.点击按钮时出现适配器对话框

    源码如下:

     1 // 适配器对话框
     2     public void showDialog6(View v) {
     3         AlertDialog.Builder builder = new AlertDialog.Builder(this);
     4         ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
     5                 android.R.layout.simple_expandable_list_item_1, new String[] {
     6                         "第一条数据", "第二条数据", "第三条数据" });
     7 
     8         dialog6 = builder.setIcon(R.drawable.ic_launcher)
     9                 .setAdapter(adapter, null).setPositiveButton("确定", null)
    10                 .setNegativeButton("取消", null).create();
    11         dialog6.show();
    12     }

    对话框中使用适配器,可以加载大量的数据,可以说是发挥很大的作用。

    未完,待续。

  • 相关阅读:
    AngularJS 1.x系列:AngularJS过滤器(4)
    AngularJS 1.x系列:AngularJS控制器(3)
    AngularJS 1.x系列:AngularJS简介及第一个应用(2)
    AngularJS 1.x系列:Node.js安装及npm常用命令(1)
    MySQL系列:索引基本操作(4)
    基于 Mathematica 的机器人仿真环境(机械臂篇)[转]
    使用耳切法将多边形三角化【转】
    asp.net调用非托管dll,无法加载 DLL,找不到指定模块解决方法。【转】
    ASP.NET与非托管DLL的那些事儿【转+增】
    cesium常用设置【转】
  • 原文地址:https://www.cnblogs.com/enjoy-coding/p/4795968.html
Copyright © 2020-2023  润新知