文章目录
前言
今天完成了之前界面课程详情页的撰写。开始写新的界面及其逻辑,其中用到了Dialog,于是开始学习Dialog,公司做法是自定义一个新类继承自Dialog,使用新布局作为这个Dialog的样子。然后每次新建这个新类,并同时设置Dialog中两个按钮的监听器。如果大家有这个基础,直接去看自定义布局,为了防止csdn下载需要积分,我直接把代码全贴出来。
界面类似于:
接下来要学习一下关于Dialog的用法。首先还是放几篇好文章:
1.Android Dialog的官方教程
2.android 8种对话框(Dialog)使用方法汇总
官方的教程就是给力。
Dialog是对话框的基类,但您应该避免直接实例化 Dialog,而是使用下列子类之一:
AlertDialog
此对话框可显示标题、最多三个按钮、可选择项列表或自定义布局。
DatePickerDialog 或 TimePickerDialog
此对话框带有允许用户选择日期或时间的预定义 UI。
Android 包括另一种名为 ProgressDialog 的对话框类,可显示具有进度条的对话框。不过,如需指示加载进度或不确定的进度,则应改为遵循进度和 Activity 的设计指南,并在您的布局中使用 ProgressBar。
注意事项
1.这是错误的获取context方式。
final AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());
应该直接传入当前所在的Activity
final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
使用可输入的Dialog
public void showEditDialog()
{
final EditText inputServer = new EditText(this);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Edit Dialog").setIcon(android.R.drawable.ic_dialog_info).setView(inputServer)
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this,"你取消是干啥玩意?",
Toast.LENGTH_SHORT).show();
}
});
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,inputServer.getText().toString(),
Toast.LENGTH_SHORT).show();
}
});
builder.show();
}
普通弹出框
public void showNormalDialog()
{
/* @setIcon 设置对话框图标
* @setTitle 设置对话框标题
* @setMessage 设置对话框消息提示
* setXXX方法返回Dialog对象,因此可以链式设置属性
*/
final AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.mipmap.ic_launcher);
builder.setTitle("普通弹出框");
builder.setMessage("是否继续");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this,"点击了确定",Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this,"点击了取消",Toast.LENGTH_SHORT).show();
}
});
builder.setNeutralButton("中间的",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,"点击了中间的",Toast.LENGTH_SHORT).show();
}
});
builder.create().show();
}
列表选择框、单选框、多选框
列表选择框就使用如下方法
builder.setItems(@ArrayRes int itemsId, OnClickListener listener)
要想添加多选项(复选框)或单选项(单选按钮)列表,请分别使用 setMultiChoiceItems() 或 setSingleChoiceItems() 方法。
以下示例