Android 自学之对话框

Android为我们提供了丰富的对话框支持,提供了四种常用的对话框:

  1. AlertDialog:功能丰富、实际应用最广泛的对话框。
  2. ProgressDialog:进度对话框,该对话框只用于简单的进度条封装。
  3. DatePickerDialog:日期选择对话框,该对话框只对DatePicker包装。
  4. TimePickerDialog:时间选择对话框,该对话框只对TimePicker包装。

上面四种对话框中功能最强用法最灵活的就是AlertDialog,这里详细的介绍下AlertDialog。

一、使用AlertDialog创建简单的对话框

AlertDialog的功能强大,它提供了一些方法来生成四种预定义对话框,这四种对话框分别是:

  1. 带消息、带N个按钮的提示对话框
  2. 带列表、带N个按钮的列表对话框
  3. 带多个单选列表项,带N个按钮的对话框
  4. 带多个多选列表项,带N个按钮的对话框

除此以外,AlertDialog也可以创建界面自定义的对话框。

使用AlertDialog创建对话框的步骤大致如下:

  1. 创建AlertDialog.Builder对象,该对象是AlertDialog的创建器
  2. 调用AlertDialog.Builder的方法为对话框设置图标、标题、内容
  3. 调用AlertDialog.Builder的create()方法创建AlertDialog对话框
  4. 调用AlertDialog的show()方法显示对话框

下面通过一个显示提示消息对话框的案例,来看看AlertDialog的用法:程序的界面上有个一个文本框和一个按钮,当用户点击按钮的时候将会显示普通对话框。

先看看布局文件:Layout/main.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical" >
 6
 7     <EditText
 8         android:id="@+id/show"
 9         android:layout_width="fill_parent"
10         android:layout_height="wrap_content"
11         android:editable="false"/>
12 <!-- android:editable设置是否可编辑 -->
13
14     <Button
15         android:id="@+id/bn01"
16         android:layout_width="wrap_content"
17         android:layout_height="wrap_content"
18         android:text="显示对话框"/>
19 </LinearLayout>

主程序文件:DialogTest.java

 1 package com.yangjing.dialogtest;
 2
 3 import android.app.Activity;
 4 import android.app.AlertDialog;
 5 import android.app.AlertDialog.Builder;
 6 import android.content.DialogInterface;
 7 import android.content.DialogInterface.OnClickListener;
 8 import android.os.Bundle;
 9 import android.view.View;
10 import android.widget.Button;
11 import android.widget.EditText;
12
13
14
15 public class DialogTest extends Activity{
16
17     @Override
18     protected void onCreate(Bundle savedInstanceState) {
19         super.onCreate(savedInstanceState);
20         setContentView(R.layout.main);
21         Button bn = (Button) findViewById(R.id.bn01);
22         //定义一个AlertDialog.Builder对象
23         final Builder builder = new AlertDialog.Builder(this);
24         //为按钮绑定事件监听器
25         bn.setOnClickListener(new View.OnClickListener() {
26
27                 @Override
28                 public void onClick(View source) {
29                     // 设置对话框的图标
30                     builder.setIcon(R.drawable.ic_launcher);
31                     // 设置对话框的标题
32                     builder.setTitle("自定义普通的消息提示对话框");
33                     // 设置对话框显示的内容
34                     builder.setMessage("这是一个由AlertDialog定义出来的普通对话框");
35                     // 为对话框设置一个“确定”按钮
36                     builder.setPositiveButton(
37                             "确定",
38                             //为列表项的单击事件设置监听器
39                             new OnClickListener() {
40                             @Override
41                             public void onClick(DialogInterface arg0, int arg1) {
42                                 EditText show = (EditText) findViewById(R.id.show);
43                                 show.setText("您刚刚点击了确定按钮!");
44                             }
45
46                     });
47                     // 为对话框设置一个“取消”按钮
48                     builder.setNegativeButton(
49                             "取消",new OnClickListener() {
50
51                         @Override
52                         public void onClick(DialogInterface arg0, int arg1) {
53                             EditText show = (EditText) findViewById(R.id.show);
54                             show.setText("您刚刚点击了取消按钮!");
55                         }
56                     });
57
58                     builder.create().show();
59                 }
60
61         });
62     }
63 }

运行的效果:

当用户点击了确定后,界面上EditText上会显示:您刚刚点击了确定按钮!,若是点了取消按钮的话,则会显示:您刚刚点击了取消按钮!

二、使用AlertDialog创建列表的对话框

AlertDialog.Builder除了提供setMessage方法来设置对话框所显示的消息以外,还提供了如下方法来设置对话框显示列表内容:

  • setItems(int itemsId,DialogInterface.OnClickListener listener): 创建普通列表对话框
  • setMultiChoiceItems(CharSequence[] items, boolean[] checkedItems, DialogInterface.OnMultiChoiceListener listener): 创建多选列表对话框
  • setSingleChoiceItems(CharSequence[] items, int checkedItem, DialogInterface.OnClickListener listener): 创建单选列表对话框
  • setAdapter(ListAdapter adapter,DialogInterface.OnClickListener listener): 创建根据ListAdapter提供的列表项的列表对话框

1、下面通过一个普通的列表对话框的案例,来看看setItems方法的用法:

程序的界面上有个一个文本框和一个按钮,当用户点击按钮的时候将会改变文本框的背景颜色

先看看我们简单的布局文件:Layout/main.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="fill_parent"
 4     android:layout_height="fill_parent"
 5     android:orientation="vertical" >
 6
 7 <TextView
 8     android:id="@+id/show"
 9     android:layout_width="fill_parent"
10     android:layout_height="wrap_content"
11     android:text="根据你选择的颜色而发生改变"
12     android:textSize="11pt"
13     />
14 <Button
15     android:id="@+id/bn"
16     android:layout_width="wrap_content"
17     android:layout_height="wrap_content"
18     android:text="选择颜色"
19     />
20 </LinearLayout>

主程序:ListDialogTest.java

package com.yangjing.listdialog;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class ListDialogTest extends Activity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button bn = (Button) findViewById(R.id.bn);
        final Builder builder = new AlertDialog.Builder(this);
        bn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                //设置对话框的图标
                builder.setIcon(R.drawable.ic_launcher);
                //设置对话框的标题
                builder.setTitle("简单列表对话框");
                //为列表框设置多个列表
                //setItems(int itemsId,DialogInterface.OnClickListener listener): 创建普通列表对话框
                builder.setItems(
                    new String[]{"红色","绿色","蓝色"},
                    new OnClickListener() {
                        //该方法的which参数代表用户单击了那个列表项
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                                TextView show = (TextView) findViewById(R.id.show);
                                switch (which) {
                                case 0:
                                    show.setBackgroundColor(Color.RED);
                                    break;

                                case 1:
                                    show.setBackgroundColor(Color.GREEN);
                                    break;

                                case 2:
                                    show.setBackgroundColor(Color.BLUE);
                                    break;
                                }
                        }
                    }
                );
                builder.create().show();
            }
        });
    }
}

效果展示:

时间: 2024-10-01 09:06:54

Android 自学之对话框的相关文章

【Android自学之旅】 Android开发环境的搭建

搭建参考教程: http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html http://www.cnblogs.com/bjzhanghao/archive/2012/11/14/2769409.html 下载开发工具 Jave SDK: http://www.oracle.com/technetwork/java/javase/downloads/index.html Android

【Android自学日记】关于Bitmap的理解和使用-不完整版

最近的Android自学刚好学习到异步线程的使用,对于开启异步线程加载网络图片中用到的Bitmap有点小蒙逼,这到底是个啥???所以我就自信的打开了百度!!以下就是我学习到的知识! 百度定义: 位图文件(Bitmap),扩展名可以是.bmp或者.dib.位图是Windows标准格式图形文件,它将图像定义为由点(像素)组成,每个点可以由多种色彩表示,包括2.4.8.16.24和32位色彩.例如,一幅1024×768分辨率的32位真彩图片,其所占存储字节数为:1024×768×32/(8*1024)

【转】Android详细的对话框AlertDialog.Builder使用方法

Android详细的对话框AlertDialog.Builder使用方法 我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等方式,重写我们自己的对话框.当然,这也是不失为一个不错的解决方式,但是一般的情况却是这样,我们重写的对话框,也许只在一个特定的地方会用到,为了这一次的使用,而去创建一个新类,往往有点杀鸡用牛刀的感觉,甚至会对我们的程序增加不必

经常使用的android弹出对话框

我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其它平台开发经验的朋友都会知道,大部分的平台都仅仅提供了几个最简单的实现,假设我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等方式,重写我们自己的对话框.当然,这也是不失为一个不错的解决方式,可是一般的情况却是这样,我们重写的对话框,或许仅仅在一个特定的地方会用到,为了这一次的使用,而去创建一个新类,往往有点杀鸡用牛刀的感觉,甚至会对我们的程序添加不必要的复杂性,对于这样的情形的对话框有没有更优雅的解决方式呢?    

android修改HOLO对话框风格

andriod中修改对话框的风格,可以通过设置theme来实现,部分元素需要通过Java代码来修改,下面以修改对话框的标题为例说明各步骤. 1.编写一个文本样式. DIALOG的标题是一个textview,在sytles.xml中,添加如下代码来设置你自己的文本样式: <style name="DialogWindowTitle"> <item name="android:textSize">22sp</item> <ite

Android 自学之拖动条SeekBar

拖动条(SeekBar)和进度条非常相似,只是进度条采用颜色填充来表明进度完成的程度,而拖动条则通过滑块的位置来标识数值----而且拖动条允许用户拖动滑动块来改变值,因此拖动条通常用于对系统的某种数值进行调节,比如音量调节. SeekBar允许用户改变拖动条的滑块外观,改变滑块外观通过如下属性来指定 android:thumb  指定一个Drawable对象,该对象将作为自定义滑块. 为了让程序能响应拖动条滑块位置的改变,程序可以考虑为他绑定一个OnSeekBarChangerListener监

Android 自学之自动完成文本框 AutoCompleteTextView

自动完成文本框(AutoCompleteTextView)从EditText派生而出,实际上他也是一个编辑框,但他比普通的编辑框多了一个功能:当用户输入一定字符后,自动完成文本框会显示一个下拉菜单,供用户从中选择,当用户选择了某个菜单项过后,AutoCompleteTextView就会按用户选择自动填写该文本框. AutoCompleteTextView支持的常用的XML属性和相关方法及说明 XML属性 相关方法 说明 android:completionHint setCompletionHi

Android 自学之列表选择框Spinner

列表选择框(Spinner)与Swing编程里面的Spinner不同,这里的Spinner其实就是一个列表选项框. Spinner是ViewGroup的间接子类,因此他也可作为容器使用. Spinner支持的常用XML属性和说明: XML属性 说明 android:prompt 设置该列表框的提示 android:entries 使用数组资源设置该下拉列表框的列表项目 啥都不说了我们看看代码: layout/main.xml 1 <?xml version="1.0" encod

Android中Dialog对话框(未完待续)

布局文件xml: 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5