之前我们讲过弹出信息toast,但是toast并不允许用户进行交互,例如选择确定、取消等操作。所以我们还需要学习对话框的制作。对话框就是在程序运行中的弹出窗口,主要分为:警告对话框、进度对话框、日期选择对话框、时间选择对话框……
警告对话框
简单拖拽一个按钮,绑定一个test事件,然后运用如下代码:
package com.example.test_alert;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void test01(View view){
//创建一个警告对话框
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("这里是提示信息");
builder.setMessage("对话框的内容在这儿");
AlertDialog.Builder builder1 = builder.setPositiveButton("确定",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,"选择了确定",Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
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();
}
});
AlertDialog alertDialog =builder.create();//这个方法可以返回一个alertDialog对象
alertDialog.show();
}
}
然后效果如图所示
一个基本的警告对话框就制作完成了,警告对话框的选择按钮建议不超过三个,否则会影响用户的体验,一般都是放两个(确认、取消)或者三个(满意、一般、不满意)等等。
警告对话框改进
多个字符串提示框
基本对话框实现以后,我们发现上面提示的文字仅仅是一个字符串,我们还可以做出改进,让它显示多个字符串。
public void test01(View view){
//创建一个警告对话框
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("这里是提示信息");
builder.setItems(ss, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,ss[which],Toast.LENGTH_SHORT).show();
}
});
如图,setItems方法可以将一个数组作为提示的内容,并且可以设置响应的监视器来响应。
单选框
当然,内容也可以是单选框:
builder.setSingleChoiceItems(ss,0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,ss[which],Toast.LENGTH_SHORT).show();
}
});
按照以上代码,我们可以对三个字符串进行选择。相比较于上一个方法,这个方法多了一个参数0,表示点开以后系统默认选择第0个参数,我们也可以设置1或者2,让它默认选择后两个字符串。
多选框
多选也是可以的:
builder.setMultiChoiceItems(ss, null, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
Toast.makeText(MainActivity.this,ss[which],Toast.LENGTH_SHORT).show();
}
});
第二个参数同样是默认的选择情况,我们可以选择传入null,或者一个非空的布尔类型的数组,表示最初的选择情况。
自定义对话框实现
主要使用LayoutInflater类来把自定义的view放入AlertDialog当中进行显示。
首先我们要自己定义我们需要的布局文件:
例如我们新建一个页面叫做login,然后在界面中设置自己需要的组件,我这里随便拖动了一些进去:
public void test01(View view){
//创建一个警告对话框
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("这里是提示信息");
View login=this.getLayoutInflater().inflate(R.layout.login,null);//获得我们定义好的布局文件
builder.setView(login);
AlertDialog alertDialog =builder.create();//这个方法可以返回一个alertDialog对象
alertDialog.show();
}
然后我们就可以对按钮的方法进行绑定,代码如上,实现效果如下:
这样,我们自定义的对话框就可以实现了!!
制作不易,点个赞再走吧!!!
参考自:尚学堂课