Android之Builder对话框的一些常用方式
原文:
http://blog.csdn.net/kkfdsa132/article/details/6322835
Android为我们提供几种对话框,主要有:AlertDialog、ProgressDialog、DataPickerDialog、TimePickerDialog。
AlertDialog,是具有0-3个按钮,还可以可以放置选项、复选框单选框或自定义布局等,以达到与用户交互的效果。
AlertDialog中 最常用的莫过于Builder对话框。下面,列举出它常用的几种方式:1.简单的Builder;2.带控件的Builder;3.自定义布局的Builder;4.嵌套的Builder
1)简单的Builder

- new AlertDialog.Builder(AlertDialog_Builder.this) //Content上下文
- .setIcon(android.R.drawable.ic_dialog_alert) //图标,android.R开头表示Android提供的资源库
- .setTitle("简单的Builder:显示文本内容") //标题
- .setMessage(et_show.getText()) //要显示的内容
- .show(); //显示
2)带控件的Builder

- final CharSequence[] items ={"Black", "Red", "Blue", "Yellow"};
- final int[] color = {Color.BLACK, Color.RED, Color.BLUE, Color.YELLOW};
- final StringBuffer selectedItem = new StringBuffer("0");
- new AlertDialog.Builder(AlertDialog_Builder.this)
- .setIcon(android.R.drawable.ic_dialog_info)
- .setTitle("带Button的Builder:显示文本内容")
- //.setMessage(et_show.getText())
- .setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- selectedItem.delete(0, selectedItem.length()-1);
- selectedItem.append(which);
- }
- })
- .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {//添加一个Button并注册其响应事件
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- int colorID = Integer.parseInt(selectedItem.toString());
- et_show.setBackgroundColor(color[colorID]);
- }
- })
- .setNegativeButton("清除", new DialogInterface.OnClickListener() { //注意,这个是SetNegativeButton,上面那个是SetPositiveButton
- //不能重复名字,否则最后那个会覆盖前面那个,也就是说每个Buttion只显示一个。
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- et_show.setText("");
- }
- })
- .setNeutralButton("取消", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- dialog.cancel();
- }
- })
- .show();
3)自定义布局的Builder

a.代码
- final LayoutInflater layout = LayoutInflater.from(AlertDialog_Builder.this); //用于获取,要使用final修饰
- final View customView = layout.inflate(R.layout.alter_text, null); //创建自定义的View,要使用final修饰
- new AlertDialog.Builder(AlertDialog_Builder.this)
- .setIcon(android.R.drawable.ic_dialog_info)
- .setTitle("自定义的Builder:修改文本内容")
- .setView(customView) //添加自定义视图
- .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {//添加一个Button并注册其响应事件
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- EditText et_alteredText = (EditText)customView.findViewById(R.id.et_alteredText); //获取自定义View里面的EditText
- et_show.setText(et_alteredText.getText().toString());
- }
- })
- .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { //注意,这个是SetNegativeButton,上面那个是SetPositiveButton
- //不能重复名字,否则最后那个会覆盖前面那个,也就是说每个Buttion只显示一个。
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- dialog.cancel();
- }
- })
- .show();
b.布局文件alter_text.xml
- <?xml version="1.0" encoding="utf-8"?>
- <AbsoluteLayout
- android:id="@+id/widget1"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- xmlns:android="http://schemas.android.com/apk/res/android"
- >
- <EditText
- android:id="@+id/et_alteredText"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:textSize="18sp"
- android:layout_x="0px"
- android:layout_y="22px"
- >
- </EditText>
- </AbsoluteLayout>
4)嵌套的Builder

- final LayoutInflater layout2 = LayoutInflater.from(AlertDialog_Builder.this); //用于获取XML工厂,要使用final修饰
- final View customView2 = layout2.inflate(R.layout.alter_text, null); //创建自定义的View,要使用final修饰
- new AlertDialog.Builder(AlertDialog_Builder.this)
- .setIcon(android.R.drawable.ic_dialog_info)
- .setTitle("嵌套的Builder:显示文本内容")
- .setMessage(et_show.getText())
- .setPositiveButton(R.string.rename, new DialogInterface.OnClickListener() {//添加一个Button并注册其响应事件
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- new AlertDialog.Builder(AlertDialog_Builder.this)
- .setIcon(android.R.drawable.ic_dialog_info)
- .setTitle("嵌套的Builder:修改文本内容")
- .setView(customView2) //添加自定义视图
- .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {//添加一个Button并注册其响应事件
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- EditText et_alteredText = (EditText)customView2.findViewById(R.id.et_alteredText); //获取自定义View里面的EditText
- et_show.setText(et_alteredText.getText().toString());
- }
- })
- .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { //注意,这个是SetNegativeButton,上面那个是SetPositiveButton
- //不能重复名字,否则最后那个会覆盖前面那个,也就是说每个Buttion只显示一个。
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- dialog.cancel();
- }
- })
- .show();
- }
- })
- .setNegativeButton("取消", new DialogInterface.OnClickListener() { //注意,这个是SetNegativeButton,上面那个是SetPositiveButton
- //不能重复名字,否则最后那个会覆盖前面那个,也就是说每个Buttion只显示一个。
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- et_show.setText("");
- }
- })
- .show();
至于Builder的进一步使用,以后在补上。
- 顶
- 0
- 踩
Android之Builder对话框的一些常用方式的更多相关文章
- android 开发AlertDialog.builder对话框的实现
AndroidAPI提供了Dialog对话框控件,但google明确指出不建议开发者只是使用Dialog来创建对话框,而应该自定义对话框或者使用API中提供的Dialog的子类,如AlertDialo ...
- Android 自学之对话框
Android为我们提供了丰富的对话框支持,提供了四种常用的对话框: AlertDialog:功能丰富.实际应用最广泛的对话框. ProgressDialog:进度对话框,该对话框只用于简单的进度条封 ...
- Android中的几个基本常用控件
Android 中常用的几大UI控件 1. TextView : 用于在界面中显示一段文本信息 <TextView android:id="@+id/text_view" / ...
- android中跨进程通讯的4种方式
转自:http://blog.csdn.net/lyf_007217/article/details/8542359 帖子写的很好.看来一遍,试了一遍,感觉太有意义.必须转过来! android中跨进 ...
- Android UI系列--对话框(一)(AlertDialog,TimePickerDialog,DatePickerDialog,ProgressDialog)
一.Dialog介绍 dialog就是一个在屏幕上弹出一个可以让用户做出一个选择,或者输入额外的信息的对话框,一个对话框并不会沾满我们整个的屏幕,并且通常用于模型事件当中需要用户做出一个决定后才会继续 ...
- 【转】Android播放音频MediaPlayer的几种方式介绍
接下来笔者介绍一下Android中播放音频的几种方式,android.media包下面包含了Android开发中媒体类,当然笔者不会依次去介绍,下面介绍几个音频播放中常用的类: 1.使用MediaPl ...
- 【Android】Android 8种对话框(Dialog)
1.写在前面 Android提供了丰富的Dialog函数,本文介绍最常用的8种对话框的使用方法,包括普通(包含提示消息和按钮).列表.单选.多选.等待.进度条.编辑.自定义等多种形式,将在第2部分介绍 ...
- 【Android】播放音频的几种方式介绍
接下来笔者介绍一下Android中播放音频的几种方式,android.media包下面包含了Android开发中媒体类,当然笔者不会依次去介绍,下面介绍几个音频播放中常用的类: 1.使用MediaPl ...
- Java Android 注解(Annotation) 及几个常用开源项目注解原理简析
不少开源库(ButterKnife.Retrofit.ActiveAndroid等等)都用到了注解的方式来简化代码提高开发效率. 本文简单介绍下 Annotation 示例.概念及作用.分类.自定义. ...
随机推荐
- java.net.URISyntaxException: Illegal character in query at index 147
这是url出现了特殊字符,需要将特殊字符进行替换
- java爬虫出现java.lang.IllegalArgumentException: Illegal character in path at index 31
url地址中出现了空格,使用trim()函数去除空格就好了
- Ubuntu18.04安装Vim-plug与YCM
由于个人强迫症的原因,之前的ycm是通过vundle来管理的,这次想更新一下ycm发现问题太多,于是就重新装了个Ubuntu虚拟机,用vim-plug来进行管理ycm及其他插件. 首先要换一下Ubun ...
- HDU 1237 简单计算器(栈+stringstream)
提供几份代码,这题的输入可以用stringsteam处理,先处理乘除后处理加减,正常思路,但是后面统计加减法的时候,对栈的运用错了,我用的时候相当于给它多加了几个括号就错了. 正确的简单解法就是,加法 ...
- Flutter Container 组件、Text 组件详解
Text 组件 textAlign 文本对齐方式(center 居中,left 左对齐,right 右对齐,justfy 两端对齐) textDirection 文本方向(ltr 从左至右 ...
- 判断是app 或者 网页
function openInWebview () { let ua = navigator.userAgent.toLowerCase(); if (ua.match(/MicroMessenger ...
- Java面向对象编程 -6.4
二维数组 数组的定义格式 数组的动态初始化:初始化之后数组中的每一个元素的保存的内容为其对应数据类型的默认值 声明并初始化数组: 数据类型 数组名称 [][] = new 数据类型[行个数][列个数] ...
- 2020牛客寒假算法基础集训营3 - G. 牛牛的Link Power II(线段树)
题目链接:牛牛的Link Power II 题意:给你一个只含$0$和$1$的串,定义串的$Link$值为串中两个的$1$之间的距离的和,$(u,v)$和$(v,u)$被看认为是同一对,有$m$次操作 ...
- SVM资源
算法源码: SVM-From-Scratch:https://github.com/adityajn105/SVM-From-Scratch
- 7,请描述下cookies,sessionStorage和localStorage的区别
7,请描述下cookies,sessionStorage和localStorage的区别 首先,cookie是网站为了标识用户身份而储存在用户本地终端(client side,百科: 本地终端指与计算 ...