当前位置:   article > 正文

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

android 弹出对话框

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

    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53

然后效果如图所示
在这里插入图片描述
一个基本的警告对话框就制作完成了,警告对话框的选择按钮建议不超过三个,否则会影响用户的体验,一般都是放两个(确认、取消)或者三个(满意、一般、不满意)等等。

警告对话框改进

多个字符串提示框

基本对话框实现以后,我们发现上面提示的文字仅仅是一个字符串,我们还可以做出改进,让它显示多个字符串。

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();
            }
        });
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

如图,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();
            }
        });
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

按照以上代码,我们可以对三个字符串进行选择。相比较于上一个方法,这个方法多了一个参数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();
            }
        });
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

第二个参数同样是默认的选择情况,我们可以选择传入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();

    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/318484
推荐阅读
相关标签
  

闽ICP备14008679号