Android 弹出对话框怎么做?(小白速成9)

之前我们讲过弹出信息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();

    }

然后我们就可以对按钮的方法进行绑定,代码如上,实现效果如下:
在这里插入图片描述
这样,我们自定义的对话框就可以实现了!!
制作不易,点个赞再走吧!!!
参考自:尚学堂课

  • 16
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值