Android Dialog详解及实例代码

 Android Dialog详解及实例代码

概述:

Android开发中最常用的就是Dialog类,除了自定义dialog布局,最多的就是用在弹出对话框、进度条、输入框、单选、复选框。

1、选择对话框:

AlertDialog.Builder dialog = new AlertDialog.Builder(this);
dialog.setTitle("选择对话框");
dialog.setMessage("请选择确认或取消");
dialog.setCancelable(false); //设置按下返回键不能消失
dialog.setPositiveButton("确认", new DialogInterface.OnClickListener() {
  @Override
  public void onClick(DialogInterface dialog, int which) {
    Toast.makeText(MainActivity.this, "您选择了确认", Toast.LENGTH_LONG).show();
      }
    });
    dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
        Toast.makeText(MainActivity.this, "您选择了取消", Toast.LENGTH_LONG).show();
      }
    });
dialog.show();//显示弹出窗口

2、进度条

ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setTitle("显示进度条");
progressDialog.setMessage("加载中...");
progressDialog.setCancelable(true);
progressDialog.show();

3、弹出输入框

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("弹出输入框");
builder.setMessage("输入内容");
final EditText editText = new EditText(this);
builder.setView(editText);
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
      @Override
  public void onClick(DialogInterface dialog, int which) {
    Toast.makeText(MainActivity.this, "您输入了" + editText.getText().toString(), Toast.LENGTH_SHORT).show();
      }
  });
builder.setNegativeButton("取消", null);
builder.show();

4、弹出单选框

final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("弹出单选框");
final String[] choice = new String[]{"Java", "C++", "PHP"};
builder.setSingleChoiceItems(choice, 0,
  new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
      Toast.makeText(MainActivity.this, "您选择了" + choice[which], Toast.LENGTH_LONG).show();
      dialog.dismiss(); // 让窗口消失
    }
  });
builder.create().show();

5、弹出复选框

final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("弹出多选框");
final String[] choice = new String[]{"Android", "IOS", "Windos Phone"}; // 选择项
final boolean[] isCheck = new boolean[choice.length]; // 是否被选中
builder.setMultiChoiceItems(choice, null,
  new DialogInterface.OnMultiChoiceClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
      if (isChecked == true)
        isCheck[which] = true;
      else if(isChecked == false)
        isCheck[which] = false;
     }
  });
builder.setNegativeButton("取消", null);
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
  @Override
  public void onClick(DialogInterface dialog, int which) {
    String isSelected = "您选择了";
    for (int i = 0; i < choice.length; i++) {
      if (isCheck[i] == true) {
        isSelected += choice[i]+","; // 将选择的内容加上
      }
    }
    Toast.makeText(MainActivity.this, isSelected, Toast.LENGTH_LONG).show();
   }
});
builder.create();
builder.show();

6、自定义布局的Dialog

AlertDialog.Builder builder = new AlertDialog.Builder(this);
 final AlertDialog dialog = builder.create();
 View view = View.inflate(this, R.layout.personal_modifyhead_dialog, null);
 dialog.setView(view, 0, 0, 0, 0);// 设置边距为0,保证在2.x的版本上运行没问题
 dialog.show(); 

 AutoRelativeLayout rl_photograph = (AutoRelativeLayout) view.findViewById(R.id.rl_photograph);
 rl_photograph.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
     presenter.modiftHeadFromPhotograph();
     dialog.dismiss();
   }
 }); 

 AutoRelativeLayout rl_album = (AutoRelativeLayout) view.findViewById(R.id.rl_album);
 rl_album.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
     presenter.modifyHeadFromAlbum();
     dialog.dismiss();
   }
 });

上面就是日常开发中常用的一些,在此记录,以便日后查询。

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

(0)

相关推荐

  • android控件封装 自己封装的dialog控件

    自定义dialog肯定是用的很多了但是感觉每次做都是很乱 单纯完成任务而已,现在封装了一下 以后用到直接copy 先上图: 主activity 复制代码 代码如下: package com.su.testcustomdialog; import com.su.testcustomdialog.MyDialog.Dialogcallback; import android.app.Activity; import android.os.Bundle; import android.view.Vie

  • Android中Dialog去黑边的方法

    本文实例展示了Android中Dialog去黑边的方法.并且分为保留阴影与不保留阴影两种实现方法.供大家参考借鉴.具体实现方法如下: 1.不保留阴影 代码如下: <?xml version="1.0" encoding="utf-8"?> <resources> <style name="dialog" parent="@android:style/Theme.Dialog"><!--

  • android自由改变Dialog窗口位置的方法

    本文实例讲述了android自由改变Dialog窗口位置的方法.分享给大家供大家参考.具体如下: Dialog dialog = new Dialog(this); dialog.setContentView(R.layout.dialog_layout); dialog.setTitle("Custom Dialog"); //获得当前窗体 Window window = dialog.getWindow(); //重新设置 WindowManager.LayoutParams lp

  • Android开发笔记之:Dialog的使用详解

    Dialog是任何系统都必须有的一个控件,作为辅助窗口,用于显示一些消息,或请求用户采取一引起操作等.在Android中也不例外,基本使用可能参看文档.使用时的注意事项1. BACK键能取消掉对话框(dismiss),但是却不会触发其onOkey和onCancel回调接口,所以如果你的对话框会改某些状态,一定要注意还有第三种方式取消对话框.2. 尽量少用模态对话框(Model dialog),如果Dialog.setCancellable(false),就变成了一个模态对话框,除了程序内部把其D

  • 探讨:你真的会用Android的Dialog吗?

    一个Bug前几日出现这样一个Bug是一个RuntimeException,详细信息是这样子的: 复制代码 代码如下: java.lang.IllegalArgumentException: View not attached to window manager    at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:356)    at android.view.WindowManagerImpl.re

  • android中ProgressDialog与ProgressBar的使用详解

    一 .ProgressDialogProgressDialog与ProgressBar在UI中动态显示一个加载图标显示程序运行状态.ProgressDialog是继承自Android.app.ProgressDialog所设计的互动对话窗口,使用时,必须新建ProgressDialog对象,在运行时会弹出"对话框"作为提醒,此时应用程序后台失去焦点(即此时无法对UI组件进行操作),直到进程结束后,才会将控制权交给应用程序,如果在Activity当中不希望后台失焦,又希望提示User有某

  • Android中自定义对话框(Dialog)的实例代码

    1.修改系统默认的Dialog样式(风格.主题) 2.自定义Dialog布局文件 3.可以自己封装一个类,继承自Dialog或者直接使用Dialog类来实现,为了方便以后重复使用,建议自己封装一个Dialog类 第一步: 我们知道Android定义个控件或View的样式都是通过定义其style来实现的,查看Android框架中的主题文件,在源码中的路径:/frameworks/base/core/res/res/values/themes.xml,我们可以看到,Android为Dialog定义了

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

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

  • android dialog自定义实例详解

    本人工作有一个月多了.对于android很多东西,都有了新的了解或者说真正的掌握.为了让更多的像我这样的小白少走弯路,所以我会坚持将我在工作中遇到的一些比较令我印象深刻的知识点整合出来给大家(顺序是按照我工作到现在的时间来制作的,其实也是想给自己一个记录吧.记录自己一路走来以及以后的路, 至少我想找到曾经的记录都有了). 第一个需求:简单的自定义dialog 需求:创建一个dialog,该dialog具备以下功能: 1.有一个窗口可以显示文章 2.根据需求显示 1)点击同意(不同意),触发对应的

  • Android Dialog详解及实例代码

     Android Dialog详解及实例代码 概述: Android开发中最常用的就是Dialog类,除了自定义dialog布局,最多的就是用在弹出对话框.进度条.输入框.单选.复选框. 1.选择对话框: AlertDialog.Builder dialog = new AlertDialog.Builder(this); dialog.setTitle("选择对话框"); dialog.setMessage("请选择确认或取消"); dialog.setCance

  • Android ViewPagerIndicator详解及实例代码

    Android ViewPagerIndicator详解及实例代码 关于自定义View的属性零碎知识 自定义View和自定义属性的知识不再此提及,这里着重说的是属性在自定义View中的获取方式,自定义的属性如下: <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="Wisely"> <attr name=&

  • Android CoordinatorLayout详解及实例代码

    Android CoordinatorLayout详解 一.CoordinatorLayout有什么作用 CoordinatorLayout作为"super-powered FrameLayout"基本实现两个功能: 1.作为顶层布局 2.调度协调子布局 CoordinatorLayout使用新的思路通过协调调度子布局的形式实现触摸影响布局的形式产生动画效果.CoordinatorLayout通过设置子View的 Behaviors来调度子View.系统(Support V7)提供了A

  • Android ToggleButton 详解及实例代码

    Android ToggleButton 详解 在Android的开发过程中,对于ToggleButton的使用频率也是相当的高的,下面我就来说一下,这个组件的两种使用方式. 第一种是简单的使用,利用Toast的方式弹出提示语句 需要注意的是要想自定义ToggleButton的显示的内容,就需要设置其TextOn和TextOff的内容. <ToggleButton android:id="@+id/toggleButton1" android:layout_width="

  • Android 自定义控件详解及实例代码

    开发自定义控件的步骤: 1.了解View的工作原理 2. 编写继承自View的子类 3. 为自定义View类增加属性 4. 绘制控件 5. 响应用户消息 6 .自定义回调函数 一.View结构原理 Android系统的视图结构的设计也采用了组合模式,即View作为所有图形的基类,Viewgroup对View继承扩展为视图容器类. View定义了绘图的基本操作 基本操作由三个函数完成:measure().layout().draw(),其内部又分别包含了onMeasure().onLayout()

  • Android requestFocus详解及实例

    Android requestFocus详解及实例 requestFocus的使用 一句话概括: <requestFocus />: 标签用于指定屏幕内的焦点View. 布局资源文件的根节点可以使用容器控件(如LinearLayout.FrameLayout等),也可以使用非容器控件(如:EditText.TextView等).对于非容器控件,只能在非容器控件标签中放<requestFocus />标签,表示将当前控件设为焦点.如下代码: <LinearLayout xmln

  • MyBatis获取数据库自生成的主键Id详解及实例代码

    MyBatis获取数据库自生成的主键Id详解及实例代码 在使用MySQL数据库时我们一般使用数据库的自增主键自动产生主键.如果在插入主表时,我们需要同时插入从表的数据,这时我们通常需要知道主表插入时自动产生的主键Id值. 下面介绍使用MyBatis进行插入时,如何同时获取数据库自生成的主键: 1.XML配置文件 <insert id="insert" parameterType="Person" useGeneratedKeys="true"

  • MySQL 序列 AUTO_INCREMENT详解及实例代码

    MySQL 序列 AUTO_INCREMENT详解及实例代码 MySQL序列是一组整数:1, 2, 3, ...,由于一张数据表只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现. 本章我们将介绍如何使用MySQL的序列. 使用AUTO_INCREMENT MySQL中最简单使用序列的方法就是使用 MySQL AUTO_INCREMENT 来定义列. 实例 以下实例中创建了数据表insect, insect中id无需指定值可实现自动增长. mysql>

  • Java 两种延时thread和timer详解及实例代码

    Java 两种延时thread和timer详解及实例代码 在Java中有时候需要使程序暂停一点时间,称为延时.普通延时用Thread.sleep(int)方法,这很简单.它将当前线程挂起指定的毫秒数.如 try { Thread.currentThread().sleep(1000);//毫秒 } catch(Exception e){} 在这里需要解释一下线程沉睡的时间.sleep()方法并不能够让程序"严格"的沉睡指定的时间.例如当使用5000作为sleep()方法的参数时,线 程

  • Spring组件自动扫描详解及实例代码

    Spring组件自动扫描详解及实例代码 问题描述 一个系统往往有成千上万的组件,如果需要手动将所有组件都纳入spring容器中管理,是一个浩大的工程. 解决方案 Spring 提供组件扫描(component scanning)功能.它能从classpath里自动扫描.侦测和实例化具有特定注解的组件.基本的注解是@Component,它标识一个受Spring管理的组件.其他特定的注解有@Repository.@Service和@Controller,它们分别标识了持久层.服务处和表现层的组件.

随机推荐