AlertDialog是设置提示框的控件,一般都是简单的提示您是否要xxxx,下面一个确定,或者取消。下面我们介绍一些系统提供的比较复杂的提示方法。还有如何自定义设置提示内容。
1.一般的提示
里面只需要自己设置提示标题,提示内容,还有点击确定时执行什么操作,点击取消时执行什么操作。很基础的应用,下面给大家演示一个是否要退出程序。
//一般提示
Button btn1=(Button)findViewById(R.id.button0);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);//创建builder对象
builder.setMessage("确认退出吗?"); //设置显示信息的内容
builder.setTitle("提示"); //设置标题
//设置确认按钮及其监听器
builder.setPositiveButton("确认", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss(); //关闭对话框
MainActivity.this.finish(); //关闭Activity-->退出应用程序
}
});
//设置取消按钮及其监听器
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss(); //仅仅关闭对话框
}
});
//创建并显示对话框
builder.create().show();
}
});
执行效果如下:
2.多按钮选择提示
一般提示有两个按钮,而这里有三个按钮,同时在这为大家展示如何加上图片,代码如下
//多按钮选择
Button btn2=(Button)findViewById(R.id.button1);
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//构建Builder对象并设置其属性,然后创建对话框
Dialog dialog = new AlertDialog.Builder(MainActivity.this)
.setIcon(R.drawable.zhoujielun) //设置图标,记得自己加上图片
.setTitle("喜好调查")
.setMessage("你喜欢周杰伦的歌吗?")
.setPositiveButton("很喜欢", new DialogInterface.OnClickListener() { //"确认按钮"
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "我很喜欢他的歌",
Toast.LENGTH_LONG).show();
}
})
.setNegativeButton("不喜欢", new DialogInterface.OnClickListener() {//"取消按钮"
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "我不喜欢他的歌", Toast.LENGTH_LONG)
.show();
}
})
.setNeutralButton("一般", new DialogInterface.OnClickListener() {//"中性按钮"
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "谈不上喜欢不喜欢", Toast.LENGTH_LONG)
.show();
}
}).create(); //创建对话框
//显示对话框
dialog.show();
}
});
运行结果如下:
3.包含输入信息的提示
这个其实就是在里面添加了一个EditText,不过由系统提供,非常方便。代码如下:
//输入数据--在对话框中放置一个View对象
Button btn3=(Button)findViewById(R.id.button2);
btn3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//动态创建一个文本框(View),用于接收用户+
// 的输入
final EditText info=new EditText(MainActivity.this);
//创建并显示对话框
new AlertDialog.Builder(MainActivity.this)
.setTitle("请输入用户名称")
.setIcon(android.R.drawable.ic_dialog_info) //设置系统图标(i)
.setView(info) //设置在对话框上显示前面创建的EditText控件
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "用户名称: "+info.getText().toString(), Toast.LENGTH_LONG)
.show(); //取出输入的内容显示
}
}).show();
}
});
运行结果如下:
4.在提示内容中加入单选按钮,代码如下:
//单选按钮
Button btn4=(Button)findViewById(R.id.button3);
btn4.setOnClickListener(new View.OnClickListener() {
//单选列表显示的内容
final String[] info=new String[] { "Item1", "Item2","Item3" };
@Override
public void onClick(View v) {
new AlertDialog.Builder(MainActivity.this)
.setTitle("单选框")
.setIcon(android.R.drawable.ic_dialog_info)
.setSingleChoiceItems( //设置单选列表格式的内容
info, //单选列表内容
1, //默认选项,从0开始计数
new DialogInterface.OnClickListener() { //单选点击监听器
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "选中: "+info[which], Toast.LENGTH_LONG)
.show(); //取出选中的内容显示
dialog.dismiss(); //关闭对话框
}
})
.setNegativeButton("取消", null) //取消按钮,默认操作--关闭对话框
.show(); //显示对话框
}
});
运行结果如下:
5.在提示内容中加入复选按钮,代码如下:
//多选按钮
Button btn5=(Button)findViewById(R.id.button4);
btn5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//多选列表
final String[] info=new String[]{ "Item1", "Item2","Item3"};
//列表选中情况, 此处并不能记忆上次选择情况,如需记忆,可将此处的数据移至类前面定义
final boolean[] selected=new boolean[]{true,false,true};
//创建并显示对话框
new AlertDialog.Builder(MainActivity.this)
.setTitle("复选框")
.setMultiChoiceItems( //多选列表格式
info, //多选列表内容
selected, //选中情况
new DialogInterface.OnMultiChoiceClickListener() { //选择情况的监听器
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
selected[which]=isChecked; //记录选中情况
}
})
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String s="";
for (int i=0; i<selected.length; i++) //查出选中情况
if (selected[i])
s+=info[i]+" ";
Toast.makeText(MainActivity.this, "选中: "+s, Toast.LENGTH_LONG)
.show(); //取出选中的内容显示
dialog.dismiss(); //关闭对话框
}
})
.setNegativeButton("取消", null)
.show();
}
});
运行结果如下:
6.列表风格的提示
//列表风格
Button btn6=(Button)findViewById(R.id.button5);
btn6.setOnClickListener(new View.OnClickListener() {
final String[] info=new String[]{"Item1", "Item2","Item3"};
@Override
public void onClick(View v) {
//创建并显示对话框
new AlertDialog.Builder(MainActivity.this)
.setTitle("列表框")
.setItems(//列表格式
info,
new DialogInterface.OnClickListener() { //点击列表的监听器
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "选中: "+info[which], Toast.LENGTH_LONG)
.show(); //取出选中的内容显示
dialog.dismiss(); //关闭对话框
}
})
.setNegativeButton("取消", null)
.show();
}
});
运行结果如下:
7,自定义的提示
这里应该注意,只有内容可以自定义,提示框名无法自己定义格式。并且按钮无法自己添加,只能能用系统提供的那三个。那我们现在看一下怎么自定义提示内容:
首先定义一个布局文件test.xml,来存放自定义的提示布局。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:background="#ffffffff"
android:orientation="horizontal"
android:id="@+id/dialog">
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/tvname"
android:textColor="#ff0000"
android:text="姓名:" />
<EditText
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/etname"
android:minWidth="100dip"/>
</LinearLayout>
然后引用这个布局文件,实现自定义布局的结果
//自定义风格
Button btn7=(Button)findViewById(R.id.button6);
btn7.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//根据布局文件动态创建对话框内的视图
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.test, null);
//不能直接在Activity中使用findViewById(),必须使用父视图查找才能成功
final EditText et=(EditText)layout.findViewById(R.id.etname);
//创建并显示对话框
new AlertDialog.Builder(MainActivity.this)
.setTitle("自定义布局")
.setView(layout) //设置显示内容
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, et.getText().toString(), Toast.LENGTH_LONG)
.show(); //取出选中的内容显示
}
})
.setNegativeButton("取消", null)
.setCancelable(false) //按回退键不可取消该对话框
.show();
}
});
运行结果如下:
上述所有文件的源码:https://download.csdn.net/download/qq_38367681/10793417