android之自定义Dialog

前言

今天完成了之前界面课程详情页的撰写。开始写新的界面及其逻辑,其中用到了Dialog,于是开始学习Dialog,公司做法是自定义一个新类继承自Dialog,使用新布局作为这个Dialog的样子。然后每次新建这个新类,并同时设置Dialog中两个按钮的监听器。如果大家有这个基础,直接去看自定义布局,为了防止csdn下载需要积分,我直接把代码全贴出来。
界面类似于:
在这里插入图片描述
接下来要学习一下关于Dialog的用法。首先还是放几篇好文章:
1.Android Dialog的官方教程
2.android 8种对话框(Dialog)使用方法汇总
官方的教程就是给力。
Dialog是对话框的基类,但您应该避免直接实例化 Dialog,而是使用下列子类之一:
AlertDialog
此对话框可显示标题、最多三个按钮、可选择项列表或自定义布局。
DatePickerDialogTimePickerDialog
此对话框带有允许用户选择日期或时间的预定义 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() 方法。
在这里插入图片描述
以下示例

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android定义dialog是一种可以根据开发者的需求进行自定义的对话框。通过自定义dialog,开发者可以实现特定的界面设计和功能。根据引用,我们可以使用AlertDialog.Builder来创建一个普通的弹出框。而根据引用,我们可以通过简单的设置和技巧来实现Android定义dialog。如果想要对话框具有自定义布局,可以创建一个布局文件,然后通过调用AlertDialog.Builder的setView()方法将其添加到对话框中。默认情况下,自定义布局会填充对话框窗口,但是仍然可以使用AlertDialog.Builder的其他方法来添加按钮和标题。此外,开发者还可以完全自定义一个Dialog,需要进行以下几步: 1. 定义一个style 2. 创建一个继承自Dialog的子类 3. 在子类中实现自定义布局和相关功能 4. 在应用中调用自定义dialog的实例来显示对话框。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [android之自定义Dialog](https://blog.csdn.net/weixin_41796401/article/details/96636408)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Android定义dialog简单实现方法](https://download.csdn.net/download/weixin_38736562/12800768)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值