26.HarmonyOS App(JAVA)列表对话框

列表对话框的单选模式:

 //单选模式
//        listDialog.setSingleSelectItems(new String[]{"第1个选项","第2个选项"},1);//单选
//        listDialog.setOnSingleSelectListener(new IDialog.ClickedListener() {
//            @Override
//            public void onClick(IDialog iDialog, int i) {
//                showToast(context,"单击了第"+(i+1)+"个选项");
//            }
//        });

多选模式:

 //多选模式
        listDialog.setMultiSelectItems(new String[]{"第1个选项","第2个选项"},new boolean[]{false,false});//多选
        listDialog.setOnMultiSelectListener(new IDialog.CheckBoxClickedListener() {

            @Override
            public void onClick(IDialog iDialog, int i, boolean b) {
                showToast(context,"单击了第"+(i+1)+"个选项");
            }
        });
package com.example.myapplication.slice;

import com.example.myapplication.ResourceTable;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.colors.RgbColor;
import ohos.agp.components.*;
import ohos.agp.components.element.ShapeElement;
import ohos.agp.render.opengl.Utils;
import ohos.agp.utils.Color;
import ohos.agp.utils.LayoutAlignment;
import ohos.agp.utils.TextAlignment;
import ohos.agp.window.dialog.IDialog;
import ohos.agp.window.dialog.ListDialog;
import ohos.agp.window.dialog.PopupDialog;
import ohos.agp.window.dialog.ToastDialog;
import ohos.app.Context;

import static ohos.agp.components.ComponentContainer.LayoutConfig.MATCH_CONTENT;

public class MainAbilitySlice extends AbilitySlice {
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main);
        Button button = (Button) findComponentById(ResourceTable.Id_btn);
        Text text = (Text) findComponentById(ResourceTable.Id_text_helloworld);
        text.setClickedListener(new Component.ClickedListener() {
            @Override
            public void onClick(Component component) {
                showToast(MainAbilitySlice.this,"点击了开始");
            }
        });
        button.setClickedListener(new Component.ClickedListener() {
            @Override
            public void onClick(Component component) {
                showToast(MainAbilitySlice.this,"点击了测试");
            }
        });
        Button btn_qipiao = (Button) findComponentById(ResourceTable.Id_btn_qipao);
        btn_qipiao.setClickedListener(new Component.ClickedListener() {
            @Override
            public void onClick(Component component) {
                showQipaoDialog(MainAbilitySlice.this,component,"这是气泡对话框提示");
            }
        });
        Button btn_listdialog = (Button) findComponentById(ResourceTable.Id_btn_listdialog);
        btn_listdialog.setClickedListener(new Component.ClickedListener() {
            @Override
            public void onClick(Component component) {
                listDialog(MainAbilitySlice.this);
            }
        });


    }
    public void showQipaoDialog(Context context, Component component, String str)
    {
        PopupDialog popupDialog = new PopupDialog(context,component,600,100);
        popupDialog.setBackColor(Color.BLUE);
        popupDialog.setHasArrow(true);//显示气泡箭头
        //创建自定义对话框组件
        Text text = new Text(context);
        text.setText(str);
        text.setTextSize(50);
        text.setLayoutConfig(new ComponentContainer.LayoutConfig(MATCH_CONTENT,MATCH_CONTENT));
        text.setClickedListener(new Component.ClickedListener() {
            @Override
            public void onClick(Component component) {
                popupDialog.hide();
            }
        });
        popupDialog.setCustomComponent(text).setMode(PopupDialog.ICON2).show();

    }
    //列表对话框
    public void listDialog(Context context)
    {
        ListDialog listDialog = new ListDialog(context,ListDialog.NORMAL);


        //默认模式

//        listDialog.setListener(new ListContainer.ItemClickedListener() {
//            @Override
//            public void onItemClicked(ListContainer listContainer, Component component, int i, long l) {
//                showToast(context,"单击了第"+(i+1)+"个选项");
//            }
//        },null,null);

        //单选模式
//        listDialog.setSingleSelectItems(new String[]{"第1个选项","第2个选项"},1);//单选
//        listDialog.setOnSingleSelectListener(new IDialog.ClickedListener() {
//            @Override
//            public void onClick(IDialog iDialog, int i) {
//                showToast(context,"单击了第"+(i+1)+"个选项");
//            }
//        });

        //多选模式
        listDialog.setMultiSelectItems(new String[]{"第1个选项","第2个选项"},new boolean[]{false,false});//多选
        listDialog.setOnMultiSelectListener(new IDialog.CheckBoxClickedListener() {

            @Override
            public void onClick(IDialog iDialog, int i, boolean b) {
                showToast(context,"单击了第"+(i+1)+"个选项");
            }
        });

        //
        listDialog.setButton(0,"取消",new IDialog.ClickedListener(){
        @Override
        public void onClick(IDialog iDialog, int i) {
            listDialog.hide();

        }
    });
        listDialog.setButton(1, "确认", new IDialog.ClickedListener() {
            @Override
            public void onClick(IDialog iDialog, int i) {
                //
                listDialog.hide();
                showToast(MainAbilitySlice.this,"点击了确认");
            }
        });
        listDialog.setSize(400,300);
        listDialog.show();
    }
    public void showToast(Context context,String str)
    {
        Text text = new Text(context);
        text.setWidth(MATCH_CONTENT);
        text.setHeight(MATCH_CONTENT);
        text.setText(str);
        text.setTextSize(45);
        text.setPadding(30,10,30,10);//设置内边距
        text.setMultipleLine(true);
        text.setTextColor(Color.BLUE);
        text.setTextAlignment(TextAlignment.CENTER);
        //文本组件使用灰色圆角背景
        ShapeElement element = new ShapeElement();
        element.setRgbColor(new RgbColor(0x888888FF));
        element.setShape(ShapeElement.RECTANGLE);
        element.setCornerRadius(15);//设置圆角半径
        text.setBackground(element);

        //创建定向布局,并加入文本组件
        DirectionalLayout layout = new DirectionalLayout(context);
        layout.setWidth(MATCH_CONTENT);
        layout.setHeight(MATCH_CONTENT);
        layout.setAlignment(LayoutAlignment.CENTER);
        layout.addComponent(text);

        ToastDialog toastDialog = new ToastDialog(context);
        toastDialog.setComponent(layout);//使用自定义组件
        toastDialog.setTransparent(true)
                .setDuration(2000) //显示2秒
                .setAlignment(LayoutAlignment.BOTTOM+LayoutAlignment.HORIZONTAL_CENTER)
                .setOffset(0,200) //距离底部边距
                .show();
    }

    @Override
    public void onActive() {
        super.onActive();
    }

    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/408608.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

互联网加竞赛 机器视觉opencv答题卡识别系统

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 答题卡识别系统 - opencv python 图像识别 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分…

C++中的左值和右值

目录 一. 左值和右值的概念 1. 左值 1.1 可修改的的左值 1.2 不可修改的左值 右值 二. 左值引用和右值引用 1. 左值引用 2. 右值引用 主要用途 1. 移动语义 2. 完美转发 2.1 引用折叠 2.2 std::forward 一. 左值和右值的概念 什么是左值和右值 1. 左值 左值是一个表示…

Unity3D 使用 Proto

一. 下载与安装 这里下载Google Protobuff下载 1. 源码用来编译CSharp 相关配置 2. win64 用于编译 proto 文件 二. 编译 1. 使用VS 打开 2. 点击最上面菜单栏 工具>NuGet 包管理器>管理解决方案的NuGet 管理包 版本一定要选择咱们一开始下载的对应版本否则不兼容&am…

使用免费的L53巧解Freenom域名失效问题

进入2月份以来,不少小伙伴纷纷收到Freenom提供的域名失效,状态由正常变成了Pending。 失效后,域名无法使用,免费的午餐没有了,而现在域名的价格也是水涨船高,真是XXX。很多做外贸的小伙伴表示 难 啊&#x…

树状数组与线段树<2>——线段树初步

这个系列终于更新了(主要因为树状数组初步比较成功) 话不多说,切入正题。 什么是线段树? 线段树是一种支持单点修改区间查询(树状数组也行) and 区间修改单点查询(树状数组不行) and 区间修改区间查询(树状数组更不行)的高级数据结构,相当…

Chiplet技术与汽车芯片(二)

目录 1.回顾 2.Chiplet的优势 2.1 提升芯片良率、降本增效 2.2 设计灵活,降低设计成本 2.3 标准实行,构建生态 3.Chiplet如何上车 1.回顾 上一篇,我们将来芯粒到底是什么东西,本篇我们来看芯粒技术的优势,以及它…

5.1 Ajax数据爬取之初介绍

目录 1. Ajax 数据介绍 2. Ajax 分析 2.1 Ajax 例子 2.2 Ajax 分析方法 (1)在网页页面右键,检查 (2)找到network,ctrl R刷新 (3)找 Ajax 数据包 (4)…

多线程相关(4)

线程安全-下 使用层面锁优化减少锁的时间:减少锁的粒度:锁粗化:使用读写锁:使用CAS: 系统层面锁优化自适应自旋锁锁消除锁升级偏向锁轻量级锁重量级锁 ThreadLocal原理ThreadLocal简介原理ThreadLocal内存泄漏 HashMap…

VMware使用虚拟机,开启时报错:无法连接虚拟设备 0:0,因为主机上没有相应的设备。——解决方法

检查虚拟机配置文件并确保物理设备已正确连接。 操作: 选中虚拟机,打开设置,点击CD/DVD。在连接处选择使用ISO镜像文件

fpga_硬件加速引擎

一 什么是硬件加速引擎 硬件加速引擎,也称硬件加速器,是一种采用专用加速芯片/模块替代cpu完成复杂耗时的大算力操作,其过程不需要或者仅需要少量cpu参与。 二 典型的硬件加速引擎 典型的硬件加速引擎有GPU,DSP,ISP&a…

【二分查找】【浮点数的二分查找】【二分答案查找】

文章目录 前言一、二分查找(Binary Search)二、浮点数的二分查找三、二分答案总结 前言 今天记录一下基础算法之二分查找 一、二分查找(Binary Search) 二分查找(Binary Search)是一种在有序数组中查找目…

1 Nacos数据持久化方式

Nacos 支持两种数据持久化方式,一种是利用内置的数据库,另一种是利用外置的数据源。 1、内置数据库支持 Nacos 默认内置了一些数据存储解决方案,如内嵌的 Derby 数据库。 这种内置方式主要用于轻量级或测试环境。 2、外置数据库支持 对于生…

【RN】学习使用 Reactive Native内置UI组件

简言 当把导航处理好后,就可以学习使用ui组件了(两者没有先后关系,个人习惯)。 在 Android 和 iOS 开发中,一个视图是 UI 的基本组成部分:屏幕上的一个小矩形元素、可用于显示文本、图像或响应用户输入。甚…

如何使用逻辑回归处理多标签问题?

逻辑回归处理多分类 1、背景描述2、One vs One3、One vs Rest4、从Sigmoid到Softmax的推导 1、背景描述 逻辑回归本身只能用于二分类问题,如果实际情况是多分类的,那么就需要对模型进行一些改动。下面介绍三种常用的将逻辑回归用于多分类的方法 2、One …

目标跟踪之KCF详解

High-Speed Tracking with Kernelized Correlation Filters 使用内核化相关滤波器进行高速跟踪 大多数现代跟踪器的核心组件是判别分类器,其任务是区分目标和周围环境。为了应对自然图像变化,此分类器通常使用平移和缩放的样本补丁进行训练。此类样本集…

用Python实现创建十二星座数据分析图表

下面小编提供的代码中,您已经将pie.render()注释掉,并使用了pie.render_to_file(十二星座.svg)来将饼状图渲染到一个名为十二星座.svg的文件中。这是一个正确的做法,如果您想在文件中保存图表而不是在浏览器中显示它。 成功创建图表&#xf…

嵌入式软件分层设计的思想分析

“嵌入式开发&#xff0c;点灯一路发” 那今天我们就以控制LED闪烁为例&#xff0c;来聊聊嵌入式软件分层: ——————————— | | | P1.1 |-----I<|--------------<| | | | P2.1 |-------------/ ---------…

MyBatis的⾼级映射及延迟加载

MyBatis的⾼级映射及延迟加载 一、多对一1.方式一&#xff1a;级联属性映射2.方式二&#xff1a;association3.方式三&#xff1a;分步查询 二、一对多1.方式一&#xff1a;collection2.方式二&#xff1a;分步查询 三、延迟加载&#xff08;懒加载&#xff09;1.分步查询的优点…

【C++】类和对象之拷贝构造函数篇

个人主页 &#xff1a; zxctscl 文章封面来自&#xff1a;艺术家–贤海林 如有转载请先通知 文章目录 1. 前言2. 传值传参和传引用传参3. 概念4. 特征 1. 前言 在前面学习了6个默认成员函数中的构造函数和析构函数 【C】构造函数和析构函数详解&#xff0c;接下来继续往后看拷…

uvloop,一个强大的 Python 异步IO编程库!

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站零基础入门的AI学习网站~。 目录 ​编辑 前言 什么是uvloop库&#xff1f; 安装uvloop库 使用uvloop库 uvloop库的功能特性 1. 更…
最新文章