鸿蒙HarmonyOS学习笔记之基于CommonDialog实现自定义ConfirmDialog

本文档详细介绍了如何在OHOS系统中实现一个ConfirmDialog,包括基本概念、接口说明、具体实现步骤以及按钮点击效果的XML布局文件。ConfirmDialog用于展示重要信息或操作,提供确定和取消按钮,点击事件可通过接口回调处理。

效果预览

在虚拟机上运行效果,只能通过点击取消和确定按钮关闭弹窗
在这里插入图片描述

一、基本概念

CommonDialog是一种在弹出框消失之前,用户无法操作其他界面内容的对话框。通常用来展示用户当前需要的或用户必须关注的信息或操作。对话框的内容通常是不同组件进行组合布局,如:文本、列表、输入框、网格、图标或图片,常用于选择或确认信息。

二、接口说明

参考官方文档

三、实现

1.ConfirmDialog类

/********
 *文件名: ConfirmDialog
 *创建者: 醉意丶千层梦
 *创建时间:2022/2/7 17:24
 *描述: ConfirmDialog
 ********/
public class ConfirmDialog extends CommonDialog implements Component.ClickedListener {
   
   


    private Context context;
    private Text  detailText;
    private Button okBtn,cancelBtn;
    private OnDialogClickListener dialogClickListener;
    public ConfirmDialog(Context context) {
   
   
        super(context);
        this.context=context;

        //居中
        setAlignment(LayoutAlignment.CENTER);

        //设置高度为自适应,宽度为屏幕的0.8
        setSize(context.getResourceManager().getDeviceCapability().width
                * context.getResourceManager().getDeviceCapability().screenDensity
                / 160*4/5, MATCH_CONTENT);
        //设置是否启用触摸对话框外区域关闭对话框的功能
        setAutoClosable(false);
        initComponents();

        LogUtils.info(getClass().getSimpleName()+" --- create dialog");
    }

    @Override
    public void onClick(Component component) {
   
   
        if (component==okBtn){
   
   
            LogUtils.info(getClass().getSimpleName()+" --- ok click");
            //关闭dialog
            destroy();
            if(dialogClickListener != null){
   
   
                dialogClickListener.onOKClick();
            }
        }
        else if(component==cancelBtn){
   
   
            LogUtils.info(getClass().getSimpleName()+" --- cancel click");
            //关闭dialog
            destroy();
            if(dialogClickListener != null){
   
   
                dialogClickListener.onCancelClick();
            }
        }
    }

    /**
     *按钮接口
     */
    public interface OnDialogClickListener{
   
   
        void onOKClick();
        void onCancelClick();
    }

    /**
     * 初始化组件以及设置对应按钮监听事件
     */
    private void initComponents(){
   
   
        //设置布局xml
        Component component= LayoutScatter.getInstance(context)
                .parse(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值