Android AlertDialog对话框详解及实例

Android  AlertDialog

关系图如下:

Android主要提供四种对话框:

1:AlertDialog:功能最丰富,实际应用最广的对话框。
2:ProgressDialog:进度条对话框
3:DatePickerDialog:日期选择器对话框
4:TimePickerDialog:时间选择器对话框

创建一个对话框的步骤:

AlertDialog.Builder builder = new AlertDialog.Builder(this)
        // 1:设置对话框标题
        .setTitle("自定义列表项对话框")
            // 2:设置图标
        .setIcon(R.drawable.tools)
            // 3:设置内容
        .setMessage("对话框的测试内容\n第二行内容");
    // 为AlertDialog.Builder添加“确定”按钮
    setPositiveButton(builder);
    // 为AlertDialog.Builder添加“取消”按钮
    setNegativeButton(builder)
        .create()
        .show();

代码区:

main.xml代码区:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:gravity="center_horizontal">
<!-- 显示一个普通的文本编辑框组件 -->
<EditText
  android:id="@+id/show"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:editable="false"/>
<!-- 定义一个普通的按钮组件 -->
<Button
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="简单对话框"
  android:onClick="simple"
  />
<!-- 定义一个普通的按钮组件 -->
<Button
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="简单列表项对话框"
  android:onClick="simpleList"
  />
<!-- 定义一个普通的按钮组件 -->
<Button
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="单选列表项对话框"
  android:onClick="singleChoice"
  />
<!-- 定义一个普通的按钮组件 -->
<Button
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="多选列表项对话框"
  android:onClick="multiChoice"
  />
<!-- 定义一个普通的按钮组件 -->
<Button
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="自定义列表项对话框"
  android:onClick="customList"
  />
<!-- 定义一个普通的按钮组件 -->
<Button
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="自定义View对话框"
  android:onClick="customView"
  />
</LinearLayout>

Activity代码区:

public class MainActivity extends Activity {
  TextView show;
  String[] items = new String[] {
      "aserbao", "Android",
      " Java",
      "IOS" };

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    show = (TextView) findViewById(R.id.show);
  }

  public void simple(View source)
  {
    AlertDialog.Builder builder = new AlertDialog.Builder(this)
      // 设置对话框标题
      .setTitle("简单对话框")
      // 设置图标
      .setIcon(R.drawable.tools)
      .setMessage("对话框的测试内容\n第二行内容");
    // 为AlertDialog.Builder添加“确定”按钮
    setPositiveButton(builder);
    // 为AlertDialog.Builder添加“取消”按钮
    setNegativeButton(builder)
      .create()
      .show();
  }

  public void simpleList(View source)
  {
    AlertDialog.Builder builder = new AlertDialog.Builder(this)
        // 设置对话框标题
        .setTitle("简单列表对话框")
            // 设置图标
        .setIcon(R.drawable.tools)
            // 设置简单的列表项内容
        .setItems(items, new OnClickListener()
        {
          @Override
          public void onClick(DialogInterface dialog, int which)
          {
            show.setText("你选中了《" + items[which] + "》");
          }
        });
    // 为AlertDialog.Builder添加“确定”按钮
    setPositiveButton(builder);
    // 为AlertDialog.Builder添加“取消”按钮
    setNegativeButton(builder)
        .create()
        .show();
  }

  public void singleChoice(View source)
  {
    AlertDialog.Builder builder = new AlertDialog.Builder(this)
        // 设置对话框标题
        .setTitle("单选列表项对话框")
            // 设置图标
        .setIcon(R.drawable.tools)
            // 设置单选列表项,默认选中第二项(索引为1)
        .setSingleChoiceItems(items, 1, new OnClickListener()
        {
          @Override
          public void onClick(DialogInterface dialog, int which)
          {
            show.setText("你选中了《" + items[which] + "》");
          }
        });
      // 为AlertDialog.Builder添加“确定”按钮
      setPositiveButton(builder);
      // 为AlertDialog.Builder添加“取消”按钮
      setNegativeButton(builder)
        .create()
        .show();
  }

  public void multiChoice(View source)
  {
    AlertDialog.Builder builder = new AlertDialog.Builder(this)
        // 设置对话框标题
        .setTitle("多选列表项对话框")
            // 设置图标
        .setIcon(R.drawable.tools)
            // 设置多选列表项,设置勾选第2项、第4项
        .setMultiChoiceItems(items
            , new boolean[]{false , true ,false ,true}, null);
    // 为AlertDialog.Builder添加“确定”按钮
    setPositiveButton(builder);
    // 为AlertDialog.Builder添加“取消”按钮
    setNegativeButton(builder)
        .create()
        .show();
  }

  public void customList(View source)
  {
    AlertDialog.Builder builder = new AlertDialog.Builder(this)
        // 设置对话框标题
        .setTitle("自定义列表项对话框")
            // 设置图标
        .setIcon(R.drawable.tools)
            // 设置自定义列表项
        .setAdapter(new ArrayAdapter<String>(this
            , R.layout.array_item
            , items), null);
    // 为AlertDialog.Builder添加“确定”按钮
    setPositiveButton(builder);
    // 为AlertDialog.Builder添加“取消”按钮
    setNegativeButton(builder)
        .create()
        .show();
  }

  public void customView(View source)
  {
    // 装载app\src\main\res\layout\login.xml界面布局文件
    TableLayout loginForm = (TableLayout)getLayoutInflater()
        .inflate( R.layout.login, null);
    new AlertDialog.Builder(this)
        // 设置对话框的图标
        .setIcon(R.drawable.tools)
        // 设置对话框的标题
        .setTitle("自定义View对话框")
        // 设置对话框显示的View对象
        .setView(loginForm)
        // 为对话框设置一个“确定”按钮
        .setPositiveButton("登录", new OnClickListener() {
          @Override
          public void onClick(DialogInterface dialog,
            int which) {
            // 此处可执行登录处理
          }
        })
        // 为对话框设置一个“取消”按钮
        .setNegativeButton("取消", new OnClickListener()
        {
          @Override
          public void onClick(DialogInterface dialog,
                    int which)
          {
            // 取消登录,不做任何事情
          }
        })
        // 创建并显示对话框
        .create()
        .show();
  }

  private AlertDialog.Builder setPositiveButton(
      AlertDialog.Builder builder)
  {
    // 调用setPositiveButton方法添加“确定”按钮
    return builder.setPositiveButton("确定", new OnClickListener()
    {
      @Override
      public void onClick(DialogInterface dialog, int which)
      {
        show.setText("单击了【确定】按钮!");
      }
    });
  }
  private AlertDialog.Builder setNegativeButton(
      AlertDialog.Builder builder)
  {
    // 调用setNegativeButton方法添加“取消”按钮
    return builder.setNegativeButton("取消", new OnClickListener()
    {
      @Override
      public void onClick(DialogInterface dialog, int which)
      {
        show.setText("单击了【取消】按钮!");
      }
    });
  }
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • Android中AlertDialog各种对话框的用法实例详解

    目标效果: 程序运行,显示图一的几个按钮,点击按钮分别显示图二到图六的对话框,点击对话框的某一项或者按钮,也会显示相应的吐司输出. 1.activity_main.xml页面存放五个按钮. activity_main.xml页面: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools&

  • Android编程实现AlertDialog自定义弹出对话框的方法示例

    本文实例讲述了Android编程实现AlertDialog自定义弹出对话框的方法.分享给大家供大家参考,具体如下: 弹出对话框,显示自定义的布局文件 弹出对话框提示设置密码或登录密码 private void showSetPasswordDialod(){ View dialogView=mInflater.inflate(R.layout.protect_first_dialog, null); AlertDialog.Builder builder=new AlertDialog.Buil

  • Android使用AlertDialog实现对话框

    示例: 一.确定对话框 AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("确认对话框"); builder.setIcon(R.drawable.icon_72); builder.setMessage("这里是对话框内容"); builder.setPositiveButton("确定", new DialogInterface.OnCl

  • Android实现点击AlertDialog上按钮时不关闭对话框的方法

    本文实例讲述了Android实现点击AlertDialog上按钮时不关闭对话框的方法.分享给大家供大家参考.具体如下: 开发过程中,有时候会有这样的需求: 点击某个按钮之后显示一个对话框,对话框上面有一个输入框,并且有"确认"和"取消"两个按钮.当用户点击确认按钮时,需要对输入框的内容进行判断.如果内容为空则不关闭对话框,并toast提示. 使用AlertDialog.Builder创建对话框时,可以使用builder.setNegativeButton和build

  • Android AlertDialog对话框用法示例

    本文实例讲述了Android AlertDialog对话框用法.分享给大家供大家参考,具体如下: AlertDialog对话框的介绍 1.获得AlertDialog静态内部类Buidler对象,由该类来创建AlertDialog对象,因为AlertDialog的构造方法全部是Protected类型 2.通过Buidler对象设置对话框的标题.按钮以及按钮要响应的事件DialogInterface.OnClickListener 3.调用Buidler的create()方法创建对话框 4.调用Al

  • ANDROID中自定义对话框AlertDialog使用示例

    在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,AlertDialog实现方法为建造者模式.AlertDialog中定义的一些对话框往往无法满足我们关于对话框的需求,这时我们就需要通过自定义对话框VIEW来实现需求,这里我自定义一个登陆的提示对话框,效果图显示如下: Layout(alertdialog自定义登陆按钮)界面代码: <?xml version="1.0" en

  • Android修改源码解决Alertdialog触摸对话框边缘消失的问题

    研究其父类时候发现,可以设置这么一条属性,在AlertDialog.Builder.create()之后才能调用这两个方法 方法一: setCanceledOnTouchOutside(false);调用这个方法时,按对话框以外的地方不起作用.按返回键还起作用 方法二: setCanceleable(false);调用这个方法时,按对话框以外的地方不起作用.按返回键也不起作用 这两个方法都属于Dialog方法,可查阅源码 修改后的源码如下: 复制代码 代码如下: case 1:         

  • 简析Android多种AlertDialog对话框效果

    android提供了四类常用的对话框,本文分享具体实现方法: 1.AlertDialog,功能最丰富,实际运用最广泛 2.progressDialog,进度条对话框 3.DatePickerDialog,日期选择对话框 4.TimePickerDialog,时间选择对话框 这里主要介绍第一种,剩下的三种都是第一种的子类,所以其方法,都可以直接使用. 创建一个对话框一般需要下面几个步骤 1.创建AlertDialog.Builder对象 2.对AlertDialog.Builder通过SetTit

  • Android Alertdialog(实现警告对话框)

    在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,AlertDialog实现方法为建造者模式.下面我们模拟卸载应用程序时弹出的最为普通的警告对话框,如下图: layout布局界面代码示例: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http:

  • Android常用的AlertDialog对话框及自定义对话框

    常用的Dialog有确认对话框,单选按钮对话框,多选按钮对话框,复选按钮对话框另外还有自定义的对话框 AlertDialog的常用方法 setTitle:为对话框设置标题 setMessage:为对话框设置内容 setIcon:为对话框设置图标 setItems设置对话框要显示的list setMultiChoiceItems:一般用于复选框显示 setSingleChoiceItem:,设置单选按钮 setNeutralButton:普通按钮 setPositiveButton:添加确定按钮

  • Android AlertDialog实现分享对话框/退出对话框/下载对话框

    一.摘要 弹窗通常用于提示用户进行某种操作,比如:点击分享按钮,弹窗分享对话框:双击返回按钮,弹窗退出对话框:下载文件,提示下载对话框等等,分享对话框/退出对话框/下载对话框,都可以直接使用AlertDialog实现,类似的效果如下图: 二.AlertDialog基础知识 AlertDialog无法直接通过new关键字获取对象,调用方法:new AlertDialog.Builder.create()获取AlertDialog对象,这个时候容易让人疑惑的是:如何设置对话框的属性?比如:对话框标题

  • Android中AlertDialog 点击按钮后不关闭对话框的功能

    这里的问题:当我点击确定按钮,也就是 AlertDialog 里的 PositiveButton 的时候,我们需要判断用户是输入是否符合我们的预期,如果不符合通常提示用户重写输入,且不关闭当前的对话框,但上图中点击按钮后会自动的关闭窗口. 先看原来的这个是怎么写的: private void openDialog() { LinearLayout linearLayout = (LinearLayout) LayoutInflater.from(getContext()).inflate(R.l

随机推荐