AlertDialog及子类的继承关系:
AlertDialog:(对话框是基于Activity的)
1.概述:
1)对话框分为两种,一种是简单的对话框,一种悬浮窗。
4.0之后,确定按钮在右边,而在2.3之前,是在左边,要注意。
2)AlertDialog生成的对话框可分为4个区域:
图标区
标题区
内容区
按钮区
2.使用方法:
步骤:
1)建立builder,并set其图片、标题、内容、以及各种按钮
(注:1>按钮的传入参数除了其名称,还有一个点击事件,而dialog中按钮的点击事件是利用new DialogInterface.OnClickListener()来完成的。2>由于对话框式基于activity的,所以传入的context应是当前界面.this)
由于set方法后得到的仍是builder,所以可以连续set。
2)builder的create()成为对话框。
3)对话框dialog显示。
builder的界面:
指定对话框内容的几种方法:
setMessage(); //设置简单内容
setItems(); //设置对话框内容为简单列表项。
setSingleChoiceItems(); //设置内容为单选列表项
setMultiChoiceItems(); //设置内容为多选列表项
setAdapter(); //设置内容为自定义列表项
setView(); //设置内容自定义View.- 对话框风格第窗口
只要在AndroidManifest.xml中的activity中加上一句:
android:theme=”@android:style/Theme.Dialog” - 对对话框进行属性的设置
setCancelable():对话框可否取消,参数为true时:鼠标点击别处,对话框会自动消失;参数为false时:对话框不能消失 ,默认为true
范例1:点击出现简单对话框
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);//1.创建builder
builder.setIcon(R.drawable.liyifeng).setTitle("这是一个对话框").setMessage("这是其中的内容").setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
Toast.makeText(getApplicationContext(), "取消", Toast.LENGTH_LONG).show();
}
}).setNeutralButton("中性按钮", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
Toast.makeText(getApplicationContext(), "中性按钮", Toast.LENGTH_LONG).show();
}
}).setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
Toast.makeText(getApplicationContext(), "确定", Toast.LENGTH_SHORT).show();
}
});
Dialog dialog = builder.create();
dialog.show();
结果演示:
延伸:也可以在create()之后,由dialog来set,区别在于set按钮时,此方法是setButton1/2/3……
范例2:点击出现带列表的对话框
思路:builder中利用setItems(),其中第一个参数是传入的数据,第二个参数是添加的点击事件,监听第几个列表子项被点击。
注:setItems(),中的点击事件仍旧是用DialogInterface.OnClickListener()。
AlertDialog.Builder builderList = new AlertDialog.Builder(MainActivity.this);
builderList.setTitle("请选择:");
builderList.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int which) {
Toast.makeText(getApplicationContext(), "点击了第"+which+"个", Toast.LENGTH_SHORT).show();
}
});
builderList.create().show();
结果演示:
范例3:带单选框的对话框
思路:1.builder中利用setSingleChoiceItems(数据,默认选中的项,点击事件仍用DialogInterface.OnClickListener());2.其中重写的onClick()方法中参数int型which是选中的位置。
A