在程序设计中,我们经常会用到对话框,这里,我为大家写了三种常见的案例。下面我们看运行截图。
下面我们直接看代码
布局文件 activity_main.xml
<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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.diagl.MainActivity" >
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="onClick1"
android:text="确定取消对话框" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="onClick2"
android:text="单选对话框" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="onClick3"
android:text="多选对话框" />
</LinearLayout>
java文件
package com.example.diagl;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// 确认/取消对话框
public void onClick1(View v) {
// AlertDialog无法通过new创建对象,所以要用其内部类Builder创建
AlertDialog.Builder builder = new Builder(this);
// 设置相关属性,图标等不是必须设置的属性
builder.setIcon(android.R.drawable.alert_light_frame);
builder.setTitle("对话框标题");
builder.setMessage("这个是对话框正文");
// 设置确定按钮的文本你和添加监听内容
builder.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "点击了确定按钮", 0).show();
}
});
// 设置取消按钮的文本和监听内容
builder.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "点击了取消按钮", 0).show();
}
});
// 创建器创建对话框
AlertDialog alertDialog = builder.create();
alertDialog.show();
/*
* 上面语句简写的话,直接builder.show();也是可以得
*/
}
// 多选对话框
public void onClick2(View v) {
AlertDialog.Builder aBuilder = new Builder(this);
aBuilder.setTitle("请选择女朋友");
/*
* 第一个参数:单选对话框的选项,一般为字符串数组 第二个参数:选择默认选项,-1表示没有默认选项。要选默认选项可以传入字符串数组下标
* 第三个参数:监听
*/
final String[] items = { "朱主爱", "新垣结衣", "刘诗诗" };
aBuilder.setSingleChoiceItems(items, -1, new OnClickListener() {
/*
* 第一个参数:表示当前对话框 第二个参数:表示用户所选择的选项下标(也就是字符串数组下标)
*/
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "你选择了" + items[which], 0)
.show();
// 这个是让用户点击后让对话框消失的语句
dialog.dismiss();
}
});
aBuilder.show();
}
// 多选对话框
public void onClick3(View v) {
AlertDialog.Builder aBuilder = new Builder(this);
aBuilder.setTitle("请选择女朋友");
// 选项内容
final String[] items = { "JoyceChu", "新垣结衣", "Taylor Swift", "赵丽颖",
"刘诗诗" };
// 默认被选中的选项,true为选择,false为没有选择,分别对应内容数组元素
final boolean[] checkedItems = { true, true, false, false, false };
/*
* 第一个参数:字符串数组,要选择的选项 第二个参数:布尔值数组,表示默认被选中的选项
* 第三个参数:监听,注意用的是OnMultiChoiceClickListener()的监听方法
*/
aBuilder.setMultiChoiceItems(items, checkedItems,
new OnMultiChoiceClickListener() {
/*
* 第一个参数:当前对话框 第二个参数:选择内容的小标 第三个参数:选择中的选项为true,没选择为false
*/
@Override
public void onClick(DialogInterface dialog, int which,
boolean isChecked) {
// TODO Auto-generated method stub
checkedItems[which] = isChecked;
}
});
// 添加确定按钮
aBuilder.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
String textString = "";
for (int i = 0; i < checkedItems.length; i++) {
if (checkedItems[i]) {
textString = textString + items[i] + ",";
}
}
Toast.makeText(MainActivity.this, "你选择了" + textString + "做女朋友", 0)
.show();
dialog.dismiss();
}
});
aBuilder.show();
}
}