赞
踩
之前我们讲过弹出信息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();
}
然后我们就可以对按钮的方法进行绑定,代码如上,实现效果如下:
这样,我们自定义的对话框就可以实现了!!
制作不易,点个赞再走吧!!!
参考自:尚学堂课
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。