一、简单的内容文本弹出式对话框
还是一样MainActivity的布局文件就不放上了,就是一个简单的Button控件,在Java代码中为其绑定了一个监听器。
首先我们需要创建这个AlertDialog,因此我们新建一个方法initDialog,在此之前我们需要在全局声明一个AlertDialog对象(AlertDialog alertDialog;),下面的方法中就是在全局声明了AlertDialog对象的前提下。
/*
初始化AlertDialog
*/
public void initDialog()
{
//创建AlertDialog的构造器的对象
AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
//设置构造器标题
builder.setTitle("提示");
//构造器对应的图标
builder.setIcon(R.mipmap.ic_launcher);
//构造器内容,为对话框设置文本项(之后还有列表项的例子)
builder.setMessage("你是否要狠心离我而去?");
//为构造器设置确定按钮,第一个参数为按钮显示的文本信息,第二个参数为点击后的监听事件,用匿名内部类实现
builder.setPositiveButton("是呀", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
//第一个参数dialog是点击的确定按钮所属的Dialog对象,第二个参数which是按钮的标示值
finish();//结束App
}
});
//为构造器设置取消按钮,若点击按钮后不需要做任何操作则直接为第二个参数赋值null
builder.setNegativeButton("不呀",null);
//为构造器设置一个比较中性的按钮,比如忽略、稍后提醒等
builder.setNeutralButton("稍后提醒",null);
//利用构造器创建AlertDialog的对象,实现实例化
alertDialog=builder.create();
}
在创建AlertDialog对象成功后,在需要显示AlertDialog时用alertDialog.show()即可,否则无法显示。
由于项目要求是App在退出时跳出弹出式对话框提醒用户是否退出,因此需要重写Android系统返回按键的监听事件
/**
* 表示点击安卓系统返回键时触发的回调方法
*/
@Override
public void onBackPressed()
{
//当AlertDialog存在实例对象并且没有在展示时
if(alertDialog!=null&&!alertDialog.isShowing())
{
alertDialog.show();
}
}
下面放上整个App的代码
package com.studio.alertdialogdemo;
import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
/*
演示AlertDialog的基本使用
*/
public class MainActivity extends AppCompatActivity
{
private AlertDialog alertDialog;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initDialog();
}
/*
初始化AlertDialog
*/
public void initDialog()
{
//创建AlertDialog的构造器的对象
AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
//设置构造器标题
builder.setTitle("提示");
//构造器对应的图标
builder.setIcon(R.mipmap.ic_launcher);
//构造器内容,为对话框设置文本项(之后还有列表项的例子)
builder.setMessage("你是否要狠心离我而去?");
//为构造器设置确定按钮,第一个参数为按钮显示的文本信息,第二个参数为点击后的监听事件,用匿名内部类实现
builder.setPositiveButton("是呀", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
//第一个参数dialog是点击的确定按钮所属的Dialog对象,第二个参数which是按钮的标示值
finish();//结束当前Activity
}
});
//为构造器设置取消按钮,若点击按钮后不需要做任何操作则直接为第二个参数赋值null
builder.setNegativeButton("不呀",null);
//为构造器设置一个比较中性的按钮,比如忽略、稍后提醒等
builder.setNeutralButton("稍后提醒",null);
//利用构造器创建AlertDialog的对象,实现实例化
alertDialog=builder.create();
}
/*
实现Button监听器的除了内部类外的方法
点击Button时弹出AlertDialog
*/
public void showDialog(View v)
{
//当AlertDialog存在实例对象并且没有在展示时
if(alertDialog!=null&&!alertDialog.isShowing())
alertDialog.show();
}
/**
* 表示点击安卓系统返回键时回调的方法
*/
@Override
public void onBackPressed()
{
//当AlertDialog存在实例对象并且没有在展示时
if(alertDialog!=null&&!alertDialog.isShowing())
{
alertDialog.show();
}
}
}
当我们点击了返回键时,效果图如图
之后只有我们点击是呀才会退出当前App
二、列表式弹出式对话框
首先放上布局文件效果图
我们最终要实现的效果就是:
1、点击设置字体颜色按钮,弹出一个列表式对话框,当我们点击其中的列表项时MainActivity中的TextView文本内容HelloWorld会变成对应的颜色
/**
* 创建并显示普通列表的AlertDialog方法
*/
public