- 确认对话框
- 单选对话框
- 多选对话框
- 列表对话框
- 自定义对话框
这里,对话框一开始都要实例化一个AlertDialog.Builder对象,然后在它身上set各种属性,有关图标、标题和内容,然后设置每个Dialog的事件。设置好后用Builder的create()方法就能得到一个Dialog,最后把对话框show()出来。
确认对话框
用setPositiveButton()和setNegativeButton()方法添加确定和取消按钮,然后添加对应的事件。
AlertDialog.Builder builder1 = new AlertDialog.Builder(MainActivity.this);
builder1.setTitle("我是标题");
builder1.setMessage("我是正文");
builder1.setCancelable(false);
builder1.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "ok", Toast.LENGTH_SHORT).show();
}
});
builder1.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "cancel", Toast.LENGTH_SHORT).show();
}
});
Dialog dialog1=builder1.create();
dialog1.show();
单选对话框
用setSingleChoiceItems()为单选对话框设置展示的数据。
final String[] single_data = {"小学", "中学", "大学"};
AlertDialog.Builder builder2 = new AlertDialog.Builder(MainActivity.this);
builder2.setTitle("我是标题");
builder2.setSingleChoiceItems(single_data, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "你点击了"+single_data[which], Toast.LENGTH_SHORT).show();
}
});
Dialog dialog2=builder2.create();
dialog2.show();
多选对话框
与单选对话框不同的是 使用setMultiChoiceItems()和OnMultiChoiceClickListener
final String[] multi_data = {"玩魔方", "打羽毛球", "跑步"};
AlertDialog.Builder builder3 = new AlertDialog.Builder(MainActivity.this);
builder3.setTitle("你的兴趣");
builder3.setMultiChoiceItems(multi_data, null, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if (isChecked) {
Toast.makeText(getApplicationContext(), "你选择了"+multi_data[which], Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "你取消选择了"+multi_data[which], Toast.LENGTH_SHORT).show();
}
}
});
Dialog dialog3=builder3.create();
dialog3.show();
列表对话框
列表对话框用setItems()提供数据源。
final String[] list = {"小米","华为","其他"};
AlertDialog.Builder builder4 = new AlertDialog.Builder(MainActivity.this);
builder4.setTitle("你的手机");
builder4.setItems(list, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "你选择的是" + list[which] + "手机", Toast.LENGTH_SHORT).show();
}
});
Dialog dialog4=builder4.create();
dialog4.show();
自定义对话框
1、创建布局zidingyi.xml
2、利用LayoutInflater类将刚刚自定义的布局动态加载到当前布局得到一个View,再把这个View用Builder的setView()传入到对话框布局里,还可以为布局里的控件添加事件。
<?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="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我是自定义的哦" />
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="他真的是自定义的" />
</LinearLayout>
LayoutInflater inflater = LayoutInflater.from(this);
View view = inflater.inflate(R.layout.zidingyi, null);
Button button = view.findViewById(R.id.btn);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "自定义的哦", Toast.LENGTH_SHORT).show();
}
});
AlertDialog.Builder builder5 = new AlertDialog.Builder(this);
builder5.setTitle("自定义的");
builder5.setView(view);
Dialog dialog5 = builder5.create();
dialog5.show();
最近一次编辑于2018.11.19 16:03