Android为我们提供几种对话框,主要有:AlertDialog、ProgressDialog、DataPickerDialog、TimePickerDialog。

AlertDialog,是具有0-3个按钮,还可以可以放置选项、复选框单选框或自定义布局等,以达到与用户交互的效果。

AlertDialog中 最常用的莫过于Builder对话框。下面,列举出它常用的几种方式:1.简单的Builder;2.带控件的Builder;3.自定义布局的Builder;4.嵌套的Builder

1)简单的Builder

Android之Builder对话框的一些常用方式_第1张图片 Android之Builder对话框的一些常用方式_第2张图片

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

Android之Builder对话框的一些常用方式_第3张图片 Android之Builder对话框的一些常用方式_第4张图片

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

Android之Builder对话框的一些常用方式_第5张图片 Android之Builder对话框的一些常用方式_第6张图片

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

Android之Builder对话框的一些常用方式_第7张图片 Android之Builder对话框的一些常用方式_第8张图片

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的进一步使用,以后在补上。

更多相关文章

  1. Android桌面组件widget与快捷方式shortcut
  2. Android菜鸟日记 23获取数据方式- sql,Sdcard,assets,preference
  3. Android中监听语言变化的两种方式
  4. Android实现横竖屏、全屏的几种方式
  5. android Q(10)发送通知Notification出现无法推送问题解决方式
  6. Android很好用的确认对话框(DialogFragment)
  7. Android通过http协议数据交互的两种方式
  8. Android LayoutInflater的几种获得方式

随机推荐

  1. android 全志a10(2.3.4)开发二(linux内核编
  2. 加速Android(安卓)UI(一):加速ListView
  3. android基础学习--->xml解析学习笔记(一)DO
  4. Android之Notification的多种用法
  5. 如何安装Android应用程序到sdcard上
  6. 安卓反编译揭秘(爱加密系列教程九)
  7. Android(安卓)XML解析(Pull解析器)
  8. Android(安卓)热更新框架Bugly-9步完成热
  9. Windows平台下使用Android(安卓)NDK进行
  10. android Activity setTheme() 更改主题