1、普通对话框,效果如图:
代码:
第一种写法:
private void dialog() {
Dialog dialog = new AlertDialog.Builder(this)
.setTitle("对话框的标题")
.setMessage("对话框的内容")
.setIcon(R.drawable.ic_launcher)
// 自定义图标
.setCancelable(false)
// 设置焦点,false时点击屏幕其他地方和返回键都不操作
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "点击确定按钮",
Toast.LENGTH_SHORT).show();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "点击取消按钮",
Toast.LENGTH_SHORT).show();
}
})
.setNeutralButton("中立", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "点击中立按钮",
Toast.LENGTH_SHORT).show();
}
}).create();
dialog.show();
}
第二种写法只是代码样式不同,看个人习惯:
protected void dialog() {
AlertDialog.Builder builder = new Builder(this);
builder.setTitle("对话框的标题");
builder.setMessage("对话框的内容");
builder.setCancelable(false);
builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "点击确定按钮",
Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "点击取消按钮",
Toast.LENGTH_SHORT).show();
}
});
builder.create().show();
}
注意:布局中的内容以及按钮如果不需要可以直接去掉不写
2、列表的形式,效果如图:
代码:
private void dialog() {
final String[] arrayFruit = new String[] { "苹果", "橘子", "草莓", "香蕉" };
Dialog alertDialog = new AlertDialog.Builder(this)
.setTitle("你喜欢吃哪种水果?")
.setIcon(R.drawable.ic_launcher)
.setItems(arrayFruit, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(),
arrayFruit[which], Toast.LENGTH_SHORT).show();
}
})
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "点击确定按钮",
Toast.LENGTH_SHORT).show();
}
}).create();
alertDialog.show();
}
3、单选框的形式,效果如图:
代码:
String fruit = "选择水果";
private void dialog() {
final String[] arrayFruit = new String[] { "苹果", "橘子", "草莓", "香蕉" };
Dialog alertDialog = new AlertDialog.Builder(this)
.setTitle("你喜欢吃哪种水果?")
.setIcon(R.drawable.ic_launcher)
.setSingleChoiceItems(arrayFruit, 0,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
fruit = arrayFruit[which];
Toast.makeText(getApplicationContext(),
arrayFruit[which], Toast.LENGTH_SHORT)
.show();
}
})
.setPositiveButton("确认", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "选择了" + fruit,
Toast.LENGTH_SHORT).show();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "点击取消按钮",
Toast.LENGTH_SHORT).show();
}
}).create();
alertDialog.show();
}
4、多选框的形式,效果如图:
代码:
private void dialog() {
final String[] arrayFruit = new String[] { "苹果", "橘子", "草莓", "香蕉" };
final boolean[] arrayFruitSelected = new boolean[] { true, true, false,
false };
Dialog alertDialog = new AlertDialog.Builder(this)
.setTitle("你喜欢吃哪种水果?")
.setIcon(R.drawable.ic_launcher)
.setMultiChoiceItems(arrayFruit, arrayFruitSelected,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which, boolean isChecked) {
arrayFruitSelected[which] = isChecked;
}
})
.setPositiveButton("确认", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < arrayFruitSelected.length; i++) {
if (arrayFruitSelected[i] == true) {
stringBuilder.append(arrayFruit[i] + "、");
}
}
Toast.makeText(getApplicationContext(),
stringBuilder.toString(), Toast.LENGTH_SHORT)
.show();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "点击取消按钮",
Toast.LENGTH_SHORT).show();
}
}).create();
alertDialog.show();
}
5、自定义样式,效果如图:
代码:
(1)先定义自己的布局,这里我就简单写一个:
dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我的自定义:" />
<EditText
android:id="@+id/et_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="请输入内容" />
</LinearLayout>
(2)把自定义放在dialog中
private void dialog() {
LayoutInflater layoutInflater = LayoutInflater.from(this);
View myDialog = layoutInflater.inflate(R.layout.dialog, null);
final EditText editText = (EditText) myDialog
.findViewById(R.id.et_content);
Dialog alertDialog = new AlertDialog.Builder(this)
.setTitle("自定义布局")
.setIcon(R.drawable.ic_launcher)
.setView(myDialog)
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String msg = editText.getText().toString();
Toast.makeText(getApplicationContext(), msg,
Toast.LENGTH_SHORT).show();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "点击取消按钮",
Toast.LENGTH_SHORT).show();
}
}).create();
alertDialog.show();
}
了解更多Dialog的用法,请点击http://blog.youkuaiyun.com/u013985004/article/details/25634335