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

常用的Dialog有确认对话框,单选按钮对话框,多选按钮对话框,复选按钮对话框另外还有自定义的对话框

AlertDialog的常用方法

setTitle:为对话框设置标题

setMessage:为对话框设置内容

setIcon:为对话框设置图标

setItems设置对话框要显示的list

setMultiChoiceItems:一般用于复选框显示

setSingleChoiceItem:,设置单选按钮

setNeutralButton:普通按钮

setPositiveButton:添加确定按钮

setNegativeButton:添加取消按钮

setView:设置自定义样式

下面通过一个实例来了解这些方法

这是运行结果:

MainActivity.class

package com.example.alertdialog;
import android.R.bool;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.pm.LabeledIntent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener {
 private Button button1;
 private Button button2;
 private Button button3;
 private Button button4;
 private Button button5;
 private int mark=0;
 private String item[] = { "学生", "工人", "教师", "农民" };
 private String multChoice[]={"旅游","电影","运动","读书"};
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 button1 = (Button) findViewById(R.id.btn_button1);
 button2 = (Button) findViewById(R.id.btn_button2);
 button3 = (Button) findViewById(R.id.btn_button3);
 button4 = (Button) findViewById(R.id.btn_button4);
 button5 = (Button) findViewById(R.id.btn_button5);
 button1.setOnClickListener(this);
 button2.setOnClickListener(this);
 button3.setOnClickListener(this);
 button4.setOnClickListener(this);
 button5.setOnClickListener(this);
 }
 @Override
 public void onClick(View v) {
 // TODO Auto-generated method stub
 switch (v.getId()) {
 //确认对话框
 case R.id.btn_button1: {
 AlertDialog.Builder builder = new Builder(this);
 builder.setIcon(R.drawable.ic_launcher);
 builder.setTitle("确认对话框");
 builder.setMessage("确认退出?");
 builder.setPositiveButton("确定",
  new DialogInterface.OnClickListener() {
  @Override
  public void onClick(DialogInterface dialog, int which) {
  // TODO Auto-generated method stub
  Toast.makeText(MainActivity.this, "你单击了确定按钮",
   Toast.LENGTH_SHORT).show();
  }
  });
 builder.setNegativeButton("取消",
  new DialogInterface.OnClickListener() {
  @Override
  public void onClick(DialogInterface dialog, int which) {
  // TODO Auto-generated method stub
  Toast.makeText(MainActivity.this, "你单击了取消按钮",
   Toast.LENGTH_SHORT).show();
  }
  });
 builder.create();
 builder.show();
 break;
 }
 //列表对话框
 case R.id.btn_button2: {
 AlertDialog.Builder builder = new Builder(this);
 builder.setIcon(R.drawable.ic_launcher);
 builder.setTitle("职业");
 builder.setItems(item, new DialogInterface.OnClickListener() {
 @Override
 public void onClick(DialogInterface dialog, int which) {
  // TODO Auto-generated method stub
  Toast.makeText(MainActivity.this, "你的职业是" + item[which],
  Toast.LENGTH_SHORT).show();
 }
 });
 builder.create();
 builder.show();
 break;
 }
 //多选对话框
 case R.id.btn_button3: {
 final boolean choose[]=new boolean[multChoice.length];
 AlertDialog.Builder builder = new Builder(this);
 builder.setIcon(R.drawable.ic_launcher);
 builder.setTitle("爱好");
 builder.setMultiChoiceItems(multChoice, null, new DialogInterface.OnMultiChoiceClickListener() {
 @Override
 public void onClick(DialogInterface dialog, int which, boolean isChecked) {
  // TODO Auto-generated method stub
  choose[which]=isChecked;
 }
 });
 builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
 @Override
 public void onClick(DialogInterface dialog, int which) {
  // TODO Auto-generated method stub
  String result="";
  for(int i=0;i<multChoice.length;i++){
  if(choose[i]){
  result+=multChoice[i]+" ";
  }
  }
  Toast.makeText(MainActivity.this, "你的爱好["+result+"]", Toast.LENGTH_SHORT).show();
 }
 });
 builder.create();
 builder.show();
 break;
 }
 //单选对话框
 case R.id.btn_button4: {
 mark=0;
 AlertDialog.Builder builder = new Builder(this);
 builder.setIcon(R.drawable.ic_launcher);
 builder.setTitle("职业");
 builder.setSingleChoiceItems(item, 0, new DialogInterface.OnClickListener() {
 @Override
 public void onClick(DialogInterface dialog, int which) {
  // TODO Auto-generated method stub
  mark=which;
 }
 });
 builder.setPositiveButton("确定",
  new DialogInterface.OnClickListener() {
  @Override
  public void onClick(DialogInterface dialog, int which) {
  // TODO Auto-generated method stub
  Toast.makeText(MainActivity.this, "你的职业:"+item[mark], Toast.LENGTH_SHORT).show();
  }
  });
 builder.create();
 builder.show();
 break;
 }
 //自定义对话框
 case R.id.btn_button5: {
 LayoutInflater inflater=LayoutInflater.from(this);
 View view=inflater.inflate(R.layout.item, null);
 AlertDialog.Builder builder = new Builder(this);
 builder.setIcon(R.drawable.ic_launcher);
 builder.setTitle("自定义对话框");
 builder.setView(view);
 builder.setNeutralButton("普通按钮", new DialogInterface.OnClickListener() {
 @Override
 public void onClick(DialogInterface dialog, int which) {
  // TODO Auto-generated method stub
  Toast.makeText(MainActivity.this,"我是自定义的对话框哦",Toast.LENGTH_SHORT).show();
 }
 });
 builder.create();
 builder.show();
 break;
 }
 }
 }
}

布局文件

activity_main.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"
android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin"
 tools:context=".MainActivity" >
 <LinearLayout
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:orientation="vertical" >
 <Button
 android:id="@+id/btn_button1"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:text="确认对话框" />
 <Button
 android:id="@+id/btn_button2"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:text="列表对话框" />
 <Button
 android:id="@+id/btn_button3"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:text="多选对话框" />
 <Button
 android:id="@+id/btn_button4"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:text="单选对话框" />
 <Button
 android:id="@+id/btn_button5"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:text="自定义对话框" />
 </LinearLayout>
</RelativeLayout>

自定义的对话框布局文件

item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical" >
 <ImageView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:scaleType="fitCenter"
 android:src="@drawable/icon"
 />
 <TextView
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:text="我是自定义的对话框"
 />
</LinearLayout> 

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持我们!

(0)

相关推荐

  • Android实现本地图片选择及预览缩放效果

    在做项目时经常会遇到选择本地图片的需求,以前都是懒得写直接调用系统方法来选择图片,但是这样并不能实现多选效果,最近又遇到了,所以还是写一个demo好了,以后也方便使用.还是首先来看看效果: 显示的图片使用RecyclerView实现的,利用Glide来加载:下面弹出的图片文件夹效果是采用PopupWindow实现,这里比采用PopupWindow更方便,弹出显示的左边图片是这个文件夹里的第一张图片:选中的图片可以进行预览,使用网上一个大神写的来实现的:至于图片的获取是用ContentProvid

  • Android中ProgressDialog的dismiss()与cancel()方法的区别

    progressDialog, 它有两个方法dialog.cancel() 和 dialog.dimiss() 1. public void cancel () Since: API Level 1 Cancel the dialog. This is essentially the same as calling dismiss(), but it will also call your DialogInterface.OnCancelListener (if registered). 2.p

  • Andoroid实现底部图片选择Dialog效果

    1.效果图如下 点击选择照相后,弹出如下选择对话框: 2. Dialog实现 布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical

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

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

  • Android 中自定义Dialog样式的Activity点击空白处隐藏软键盘功能(dialog不消失)

    一.需求触发场景: 项目中需要开发带有EditText的Dialog显示,要求在编辑完EditText时,点击Dilog的空白处隐藏软键盘.但是Dialog不会消失.示例如下: 二.实现方法: 发布需求时,我个人曾想过直接通过new的方式直接创建Dialog,经过多次尝试,无法实现要求,所以采用将Activity设置为Dialog样式进行展示,调用方法实现需求.具体实现如下: 本次演示示例的工程结构: 2.1AndroidMainfest.xml配置文件 需要在配置文件中将需要显示为dialog

  • Android实现简洁的APP更新dialog数字进度条

    前言:现在一般的Android软件都是需要不断更新的,当你打开某个app的时候,如果有新的版本,它会提示你有新版本需要更新.当有更新时,会弹出一个提示框,点击下载,则在通知来创建一个数字进度条进行下载,下载成功后才到安装界面. 效果:  开发环境:AndroidStudio2.2.1+gradle-2.14.1 涉及知识: 1.Handler机制 2.自定义控件+Canvas绘画 3.自定义dialog 部分代码: public class NumberProgressBar extends V

  • Android选择图片或拍照图片上传到服务器

    最近要搞一个项目,需要上传相册和拍照的图片,不负所望,终于完成了!  不过需要说明一下,其实网上很多教程拍照的图片,都是缩略图不是很清晰,所以需要在调用照相机的时候,事先生成一个地址,用于标识拍照的图片URI 具体上传代码: 1.选择图片和上传界面,包括上传完成和异常的回调监听 package com.spring.sky.image.upload; import java.util.HashMap; import java.util.Map; import android.app.Activi

  • Android拍照或从图库选择图片并裁剪

    今天看<第一行代码>上面关于拍照和从相册选取图片那一部分,发现始终出不来效果,所以搜索其他资料学习一下相关知识,写一个简单的Demo. 一. 拍照选择图片 1.使用隐式Intent启动相机 //构建隐式Intent Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //调用系统相机 startActivityForResult(intent, 1); 2.处理相机拍照返回的结果 //用户点击了取消 if(data == n

  • Android开发之AlertDialog实现弹出对话框

    本文实例为大家分享了Android开发之AlertDialog实现弹出对话框的具体代码,供大家参考,具体内容如下 基本框架 我们在xml中添加一个按钮用来唤出对话框: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_w

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

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

  • Android常用对话框使用大全

    日常生活中我们随处可见对话框,上面有很多提示信息,更加方便提示用户进行不同的操作. 一.对话框的两个特点和一些常见的对话框 1.当弹出对话框是会结束UI线程(即主线程): 2.当前的Activity会失去焦点: 3.消息对话框.确认对话框.列表对话框.单选和多选对话框.自定义对话框 二.对话框的组成(一般有四部分组成) 1.图标 2.标题 3.内容 4.按钮 三.那么如何创建一个对话框呢?(四步组成) 1.第一步创建AlertDialog.Builder对象(建造者模式) 2.第二步设置图标.标

  • C/C++ QT实现自定义对话框的示例代码

    对话框分为多种,常见的有通用对话框,自定义对话框,模态对话框,非模态对话框等,其中通用对话框包括了,QFileDialog文件对话框,QColorDialog颜色对话框,QFontDialog字体对话框,QInputDialog输入对话框等,自定义对话框则主要是实现自己布局的简单页面,区别于窗体对话框则显得更加简单一些,除对话框外,多窗体设计也是最常用的,例如多窗体嵌入,MID窗体等,下面则是每种窗体的代码总结. 创建自定义窗体 1.首先使用两个控件,TableView主要是表格处理,TreeV

  • 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使用示例

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

  • Android使用setCustomTitle()方法自定义对话框标题

    Android有自带的对话框标题,但是不太美观,如果要给弹出的对话框设置一个自定义的标题,使用AlertDialog.Builder的setCustomTitle()方法. 运行效果如下,左边是点击第一个按钮,弹出Android系统自带的对话框(直接用setTitle()设置标题):右边是点击第二个按钮,首先inflate一个View,然后用setCustomTitle()方法把该View设置成对话框的标题. 定义一个对话框标题的title.xml文件: <?xml version="1.

  • Android 自定义对话框 showSetPwdDialog

    样式如下所示: 布局: layout dialog_set_pwd.xml <?xml version="." encoding="utf-"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height=&

  • Android编程实现在自定义对话框中获取EditText中数据的方法

    本文实例讲述了Android编程实现在自定义对话框中获取EditText中数据的方法.分享给大家供大家参考,具体如下: 在项目中忽然遇到这样的问题,需要自定义对话框,对话框需要有一个输入框,以便修改所选中的价格,然后点击确定之后,修改所显示的价格.遇到的最大的问题就是如何能够获取到自定义对话框当中edittext输入的数值,百度了很久,看到的答案都是如下: //得到自定义对话框 final View DialogView = a .inflate ( R.layout.loand, null);

  • Android studio自定义对话框效果

    本文实例为大家分享了Android studio自定义对话框效果的具体代码,供大家参考,具体内容如下 实现步骤: 第一步:自定义.xml布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="matc

随机推荐