对话框简介

android提供了丰富的对话框支持,支持四种如下的对话框。



AlertDialog简介





介绍上面六个方法的代码示例

setMessage()

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
    >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Large Text"
        android:id="@+id/text02" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="setMessage"
        android:id="@+id/button"
        android:onClick="dialog"/>
</LinearLayout>
package peng.liu.test;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.TabActivity;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TabHost;
import android.widget.TextView;

public class MainActivity extends Activity {
    TextView text02;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text02 = (TextView) findViewById(R.id.text02);
        Button setMessage = (Button) findViewById(R.id.button);
    }
    public void dialog(View view){
        AlertDialog.Builder builder = new AlertDialog.Builder(this).setIcon(R.drawable.ic_launcher)
                .setTitle("dialog")
                .setMessage("hello world");
        setPositiveButton(builder);
        setNegitiveButton(builder);
        builder.create().show();
    }
    public void setPositiveButton(AlertDialog.Builder builder){
        builder.setPositiveButton("确定",new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                     text02.setText("单击了确定按钮");
            }
        });
    }
    public void setNegitiveButton(AlertDialog.Builder builder){
        builder.setNegativeButton("取消",new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                text02.setText("单击了取消按钮");
            }
        });
    }
}

简单列表对话框setItems()

需要传入一个数组或者数组的资源id

package peng.liu.test;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.TabActivity;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TabHost;
import android.widget.TextView;

public class MainActivity extends Activity {
    TextView text02;
    private String[] items = new String[]{
            "java","python","html","css"
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text02 = (TextView) findViewById(R.id.text02);
        Button setMessage = (Button) findViewById(R.id.button);
    }
    public void dialog(View view){
        AlertDialog.Builder builder = new AlertDialog.Builder(this).setIcon(R.drawable.ic_launcher)
                .setTitle("dialog")
                .setItems(items,new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        text02.setText(items[i]);
                    }
                });
        setPositiveButton(builder);
        setNegitiveButton(builder);
        builder.create().show();
    }
    public void setPositiveButton(AlertDialog.Builder builder){
        builder.setPositiveButton("确定",new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                     text02.setText("单击了确定按钮");
            }
        });
    }
    public void setNegitiveButton(AlertDialog.Builder builder){
        builder.setNegativeButton("取消",new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                text02.setText("单击了取消按钮");
            }
        });
    }
}

单选列表对话框setSingleChooseItems

参数是数组,sursor,或者ListAdapter。

package peng.liu.test;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.TabActivity;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TabHost;
import android.widget.TextView;

public class MainActivity extends Activity {
    TextView text02;
    private String[] items = new String[]{
            "java","python","html","css"
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text02 = (TextView) findViewById(R.id.text02);
        Button setMessage = (Button) findViewById(R.id.button);
    }
    public void dialog(View view){
        AlertDialog.Builder builder = new AlertDialog.Builder(this).setIcon(R.drawable.ic_launcher)
                .setTitle("dialog")
                //1表示第二个框被选中
                .setSingleChoiceItems(items,1,new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        text02.setText(items[i]);
                    }
                });
        setPositiveButton(builder);
        setNegitiveButton(builder);
        builder.create().show();
    }
    public void setPositiveButton(AlertDialog.Builder builder){
        builder.setPositiveButton("确定",new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                     text02.setText("单击了确定按钮");
            }
        });
    }
    public void setNegitiveButton(AlertDialog.Builder builder){
        builder.setNegativeButton("取消",new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                text02.setText("单击了取消按钮");
            }
        });
    }
}

多选列表对话框 setMultiChooseItems

参数是数组或者cursor

package peng.liu.test;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.TabActivity;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TabHost;
import android.widget.TextView;

public class MainActivity extends Activity {
    TextView text02;
    private String[] items = new String[]{
            "java","python","html","css"
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text02 = (TextView) findViewById(R.id.text02);
        Button setMessage = (Button) findViewById(R.id.button);
    }
    public void dialog(View view){
        AlertDialog.Builder builder = new AlertDialog.Builder(this).setIcon(R.drawable.ic_launcher)
                .setTitle("dialog")
                //布尔数组表示第二个和第四个被选中
                .setMultiChoiceItems(items,new boolean[]{false,true,false,true},null);
        setPositiveButton(builder);
        setNegitiveButton(builder);
        builder.create().show();
    }
    public void setPositiveButton(AlertDialog.Builder builder){
        builder.setPositiveButton("确定",new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                     text02.setText("单击了确定按钮");
            }
        });
    }
    public void setNegitiveButton(AlertDialog.Builder builder){
        builder.setNegativeButton("取消",new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                text02.setText("单击了取消按钮");
            }
        });
    }
}

自定义列表项对话框 setAdapter

参数是Adapter,该方法和setSingleChooseItems都可以接受Adapter作为参数。

package peng.liu.test;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.TabActivity;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.TabHost;
import android.widget.TextView;

public class MainActivity extends Activity {
    TextView text02;
    private String[] items = new String[]{
            "java","python","html","css"
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text02 = (TextView) findViewById(R.id.text02);
        Button setMessage = (Button) findViewById(R.id.button);
    }
    public void dialog(View view){
        AlertDialog.Builder builder = new AlertDialog.Builder(this).setIcon(R.drawable.ic_launcher)
                .setTitle("dialog")
                //布尔数组表示第二个和第四个被选中
                .setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,items),null);
        setPositiveButton(builder);
        setNegitiveButton(builder);
        builder.create().show();
    }
    public void setPositiveButton(AlertDialog.Builder builder){
        builder.setPositiveButton("确定",new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                     text02.setText("单击了确定按钮");
            }
        });
    }
    public void setNegitiveButton(AlertDialog.Builder builder){
        builder.setNegativeButton("取消",new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                text02.setText("单击了取消按钮");
            }
        });
    }
}

自定义View对话框

自定义的任何的View组件

package peng.liu.test;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends Activity {
    TextView text02;
    private String[] items = new String[]{
            "java","python","html","css"
    };
    ImageView image;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text02 = (TextView) findViewById(R.id.text02);
        Button setMessage = (Button) findViewById(R.id.button);
        image = new ImageView(this);
        image.setImageResource(R.drawable.ic_launcher);
        image.setScaleType(ImageView.ScaleType.FIT_XY);
        image.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
    }
    public void dialog(View view){
        AlertDialog.Builder builder = new AlertDialog.Builder(this).setIcon(R.drawable.ic_launcher)
                .setTitle("dialog")
                //布尔数组表示第二个和第四个被选中
                .setView(image);
    }
    public void setPositiveButton(AlertDialog.Builder builder){
        builder.setPositiveButton("确定",new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                     text02.setText("单击了确定按钮");
            }
        });
    }
    public void setNegitiveButton(AlertDialog.Builder builder){
        builder.setNegativeButton("取消",new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                text02.setText("单击了取消按钮");
            }
        });
    }
}

Android对话框AlertDialog-android学习之旅(四十二)的更多相关文章

  1. Android使用局和数据实现天气项目-android学习之旅(十二)

    1.首先注册聚合数据账号,下载相应的sdk 2.导入jar包和 so文件 配置Application,初始化sdk <application //自己新建的application类 androi ...

  2. Android四大组件之一Service介绍-android学习之旅(十二)

    基本概念: service是android四大组件之一,运行在后台执行耗时操作,并不提供用户界面.其他组件如acticity可以通过startService启动该组件,也可以通过bindService ...

  3. Android广播接收器Broadcast Receiver-android学习之旅(十二)

    首先继承BroadcastReceiver类,并在manifest中注册 public class MyReceiver extends BroadcastReceiver { public MyRe ...

  4. Dynamic CRM 2013学习笔记(四十二)流程5 - 实时/同步工作流(Workflow)用法图解

    实时工作流跟插件一样,也是用事件执行管道来执行,能在pre,post或核心操作中执行.跟插件一样,不能在创建之前和删除之后执行.如果执行过程中有异常发生,会取消并回滚整个操作.实时工作流里所有的活动和 ...

  5. Python学习之旅(十二)

    Python基础知识(11):高级特性 一.分片(切片) 通过索引来获取一定范围内的元素 #字符串 s="Alice" s[0:4:2] 结果: 'Ai' #列表 l=[1,2,3 ...

  6. 【WPF学习】第四十二章 透明

    WPF支持真正的透明效果.这意味着,如果在一个性质或元素上层叠另外几个形状或元素,并让所有这些形状和元素具有不同的透明度,就会看到所期望的效果.通过该特性能够创建透过上面的元素可以看到的的图像背景,这 ...

  7. Dynamic CRM 2013学习笔记(四十六)简单审批流的实现

    前面介绍过自定义审批流: Dynamic CRM 2013学习笔记(十九)自定义审批流1 - 效果演示 Dynamic CRM 2013学习笔记(二十一)自定义审批流2 - 配置按钮 Dynamic ...

  8. Gradle 1.12用户指南翻译——第四十二章. Announce插件

    本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  9. NeHe OpenGL教程 第四十二课:多重视口

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  10. JAVA之旅(十二)——Thread,run和start的特点,线程运行状态,获取线程对象和名称,多线程实例演示,使用Runnable接口

    JAVA之旅(十二)--Thread,run和start的特点,线程运行状态,获取线程对象和名称,多线程实例演示,使用Runnable接口 开始挑战一些难度了,线程和I/O方面的操作了,继续坚持 一. ...

随机推荐

  1. 杜教筛进阶+洲阁筛讲解+SPOJ divcnt3

    Part 1:杜教筛进阶在了解了杜教筛基本应用,如$\sum_{i=1}^n\varphi(i)$的求法后,我们看一些杜教筛较难的应用.求$\sum_{i=1}^n\varphi(i)*i$考虑把它与 ...

  2. Linux设备树语法详解【转】

    转自:http://www.cnblogs.com/xiaojiang1025/p/6131381.html 概念 Linux内核从3.x开始引入设备树的概念,用于实现驱动代码与设备信息相分离.在设备 ...

  3. xml 和数组的相互转化

    数组转化为xml: function arrtoxml($arr,$dom=0,$item=0){ if (!$dom){ $dom = new DOMDocument("1.0" ...

  4. 数据权限管理中心 - 基于mybatis拦截器实现

    数据权限管理中心 由于公司大部分项目都是使用mybatis,也是使用mybatis的拦截器进行分页处理,所以技术上也直接选择从拦截器入手 需求场景 第一种场景:行级数据处理 原sql: select ...

  5. 记录一次widora sdk编译ipk 实战编译redis

      因为业务需求,需要用到redis存储一点简单的数据,因为redis有良好的哈希机制,可以完美实现我的某些需求,但openwrt官方提供memcached的ipk并没有提供redis,没办法,只能自 ...

  6. string转换为guid类型 split

    string str = "{"+context.Request["ID"]+"}"; KpiUser.ID = new Guid(str) ...

  7. application-config.xml和mvc-config.xml的区别

    头一个放bean之类的东西 后一个放controllers, view resolvers之类的东西

  8. Tomcat关闭日志输出

    tomcat中禁用catalina.out的输出,又可能很大. 1.直接修改catalina.sh文件的输出语句. 在文件中找到以下内容. if [ -z "$CATALINA_OUT&qu ...

  9. 使用redis做缓存

    redis常本用来作为缓存服务器.缓存的好处是减少服务器的压力,数据查询速度快.解决数据响应慢的问题. 添加缓存:只用redis的Hash数据类型添加缓存. 例如:需要在查询的业务功能中,添加缓存 1 ...

  10. JAVA中接口的使用

    抽象类是从多个类中抽象出来的模板,如果将这种抽象进行的更彻底,那么就是接口(interface)了.什么是接口,简单的讲,接口就是抽象类的进一步抽象,这种进一步的抽象只定义了一种规范,而不需要关心具体 ...