笔记17 | 复习AlertDialog(对话框)示例

前言

本节给大家带来是显示提示信息的第三个控件AlertDialog(对话框),查看源码知道是Dialog的子类!ProgressDialog,TimePickerDialog父类等。另外,会发现构造方法是保护的,如果我们要创建AlertDialog的话,我们需要使用到该类中的一个静态内部类:public static class Builder,然后来调用AlertDialog里的相关方法,来对AlertDialog进行定制,最后调用show()方法来显示我们的AlertDialog对话框!好的,下面我们就来学习AlertDialog的基本用法,以及定制我们的AlertDialog!

地址

http://blog.csdn.net/xiangyong_1521/article/details/50528403

目录

  • 实现效果
  • 实现过程
  • 主要代码

一.实现效果


二.实现过程

  1. 创建AlertDialog.Builder对象;
  2. 调用setIcon()来设置图标,的setTitle()或setCustomTitle()设置标题;
  3. 设置对话框的内容:setMessage()还有其他方法来指定显示的内容;
  4. 调用setPositive / Negative / NeutralButton()设置:确定,取消,中立按钮;
  5. 调用创建()方法创建这个对象,再调用显示()方法将对话框显示出来;

三.主要代码

  • MianActivity.java
package com.Evan.demo_alertdialog;  import android.R.menu;  import android.app.Activity;  import android.app.AlertDialog;  import android.content.DialogInterface;  import android.content.DialogInterface.OnClickListener;  import android.content.DialogInterface.OnMultiChoiceClickListener;  import android.os.Bundle;  import android.view.View;  import android.widget.Button;  import android.widget.Toast;  public class MainActivity extends Activity {      private Button dialog_1,dialog_2,dialog_3,dialog_4;      private AlertDialog alert;      private AlertDialog.Builder builder=null;      private boolean[] checkItems;      private final String[] Loves={              "benz","BMW","Lamborghini","Porsche","Audi"      };      @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_main);          SetView();      }      private void SetView() {          dialog_1=(Button) findViewById(R.id.button1);          dialog_2=(Button) findViewById(R.id.button2);          dialog_3=(Button) findViewById(R.id.button3);          dialog_4=(Button) findViewById(R.id.button4);      }      public void onClick(View v){          switch (v.getId()) {          /*           * 普通选择对话框           */          case R.id.button1:              alert=null;              builder=new AlertDialog.Builder(MainActivity.this);              alert=builder.setIcon(R.drawable.aa4)//图标                      .setTitle("标题设置")                      .setMessage("弹出主题设置")                      .setNegativeButton("取消", new OnClickListener() {                          @Override                          public void onClick(DialogInterface dialog, int which) {                              Toast.makeText(MainActivity.this, "您选择了:取消", 0).show();                          }                      }).setPositiveButton("确认", new OnClickListener() {                          @Override                          public void onClick(DialogInterface dialog, int which) {                              Toast.makeText(MainActivity.this, "您选择了:确认", 0).show();                          }                      }).create();//创建              alert.show();//显示              break;              /*               * 普通单选对话框               */          case R.id.button2:              alert=null;              builder=new AlertDialog.Builder(MainActivity.this);              alert=builder.setIcon(R.drawable.aa4)                      .setTitle("标题设置")                      .setItems(Loves, new OnClickListener() {                          @Override                          public void onClick(DialogInterface dialog, int which) {                              Toast.makeText(MainActivity.this, "你选择了:"+Loves[which], 0).show();                          }                      }).create();              alert.show();              break;              /*               * 单项选择对话框               */          case R.id.button3:              alert=null;              builder=new AlertDialog.Builder(MainActivity.this);              alert=builder.setIcon(R.drawable.aa4)                      .setTitle("标题设置")                      .setSingleChoiceItems(Loves, 0, new OnClickListener() {                          @Override                          public void onClick(DialogInterface dialog, int which) {                              Toast.makeText(getApplicationContext(), "你选择了" + Loves[which], Toast.LENGTH_SHORT).show();                          }                      }).create();              alert.show();              break;              /*               * 多项选择对话框               */          case R.id.button4:              checkItems = new boolean[]{false, false, false, false, false};              alert=null;              builder=new AlertDialog.Builder(MainActivity.this);              alert=builder.setIcon(R.drawable.aa4)                      .setTitle("标题设置")                      .setMultiChoiceItems(Loves, checkItems, new OnMultiChoiceClickListener() {                          @Override                          public void onClick(DialogInterface dialog, int which, boolean isChecked) {                              checkItems[which]=isChecked;                          }                      }).setPositiveButton("确实选择", new OnClickListener() {                          @Override                          public void onClick(DialogInterface dialog, int which) {                              String result="";                              for(int i=0;i<checkItems.length;i++){                                  if(checkItems[i])                                      result+=Loves[i]+" ";                              }                              Toast.makeText(getApplicationContext(), "选择的是:" + result, Toast.LENGTH_SHORT).show();                          }                      })                      .create();              alert.show();              break;          }      }  }  
  • XML
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:tools="http://schemas.android.com/tools"      android:layout_width="match_parent"      android:layout_height="match_parent"      tools:context=".MainActivity" >      <Button          android:id="@+id/button1"          android:layout_width="match_parent"          android:layout_height="wrap_content"          android:layout_alignParentLeft="true"          android:layout_alignParentTop="true"          android:layout_marginTop="14dp"          android:onClick="onClick"          android:text="普通选择对话框" />      <Button          android:id="@+id/button2"          android:layout_width="match_parent"          android:layout_height="wrap_content"          android:layout_alignParentLeft="true"          android:layout_below="@+id/button1"          android:onClick="onClick"          android:text="普通单选对话框" />      <Button          android:id="@+id/button3"          android:layout_width="match_parent"          android:layout_height="wrap_content"          android:layout_alignLeft="@+id/button1"          android:layout_below="@+id/button2"          android:onClick="onClick"          android:text="单项选择对话框" />      <Button          android:id="@+id/button4"          android:layout_width="match_parent"          android:onClick="onClick"          android:layout_height="wrap_content"          android:layout_alignLeft="@+id/button2"          android:layout_below="@+id/button3"          android:text="多项选择对话框" />  </RelativeLayout>  

原文发布于微信公众号 - 项勇(xiangy_life)

原文发表时间:2017-10-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

Mix 10 上的asp.net mvc 2的相关Session

Beyond File | New Company: From Cheesy Sample to Social Platform Scott Hansel...

2627
来自专栏我和未来有约会

Kit 3D 更新

Kit3D is a 3D graphics engine written for Microsoft Silverlight. Kit3D was inita...

2636
来自专栏我和未来有约会

Silverlight第三方控件专题

这里我收集整理了目前网上silverlight第三方控件的专题,若果有所遗漏请告知我一下。 名称 简介 截图 telerik 商 RadC...

4105
来自专栏张善友的专栏

Miguel de Icaza 细说 Mix 07大会上的Silverlight和DLR

Mono之父Miguel de Icaza 详细报道微软Mix 07大会上的Silverlight和DLR ,上面还谈到了Mono and Silverligh...

2757
来自专栏跟着阿笨一起玩NET

c#实现打印功能

2962
来自专栏飞扬的花生

jsencrypt参数前端加密c#解密

      写程序时一般是通过form表单或者ajax方式将参数提交到服务器进行验证,如何防止提交的请求不被抓包后串改,虽然无法说绝对安全却给非法提交提高了难度...

3959
来自专栏菩提树下的杨过

Flash/Flex学习笔记(23):运动学原理

先写一个公用的小球类Ball: package{ import flash.display.Sprite; //小球 类 public class B...

25410
来自专栏pangguoming

Spring Boot集成JasperReports生成PDF文档

由于工作需要,要实现后端根据模板动态填充数据生成PDF文档,通过技术选型,使用Ireport5.6来设计模板,结合JasperReports5.6工具库来调用渲...

1.3K7
来自专栏一个会写诗的程序员的博客

Spring Reactor 项目核心库Reactor Core

Non-Blocking Reactive Streams Foundation for the JVM both implementing a Reactiv...

2242
来自专栏一个爱瞎折腾的程序猿

sqlserver使用存储过程跟踪SQL

USE [master] GO /****** Object: StoredProcedure [dbo].[sp_perfworkload_trace_s...

2210

扫码关注云+社区