您当前的位置:首页 > 电脑百科 > 程序开发 > 移动端 > 鸿蒙

HarmonyOS 自定义列表组件

时间:2022-04-24 13:30:31  来源:51CTO  作者:韦海
根据鸿蒙官网组件,结合相关技术,尝试列表组件的封装,提高开发的效率。

前言

根据鸿蒙官网组件,结合相关技术,尝试列表组件的封装,提高开发的效率。

效果展示

实现步骤

封装组件代码:

hml代码:

 
<!--start判断是不是switch开关列表,不是就加点击阴影事件-->
    <div class="container {{ start ? 'background' : '' }}">
        <!--下划线-->
        <div class="underline" >
            <!--标题-->
            <div class="list-left">
                <div>
                    <text class="title">{{ title }}</text>
                </div>
                <!--describe判断是switch按钮还是图标-->
                <div class="list-des"
                     if="{{ subheading }}">
                    <text class="list">
                        <span>{{ subheading }}</span>
                    </text>
                </div>
            </div>
            <!--switch开关-->
            <div class="list-right">
                <switch class="switch-list"
                        if="{{ whether }}"
                        @change="switchHandle">
                </switch>
                <!--图标-->
                <image else @click="launch()" class="list-icon" src="../images/right.png">
                </image>
            </div>
        </div>
    </div>

css代码:

.container {
    justify-content: center;
    align-items: center;
    padding-left: 48px;
    padding-right: 35px;
    overscroll-effect: spring;
}
.background:active {
    background-color: #f6f6f6;
}
.underline {
    border-bottom: 1px solid #ccc;
}
/*标题样式代码*/
.list-left {
    flex: 1;
    flex-direction: column;
    justify-content: center;
}

.title {
    font-family: FZLTHJW--GB1-0;
    font-size: 32px;
    color: rgba(0, 0, 0, 0.9);
    letter-spacing: 0;
    font-weight: 400;
    height: 70px;
}
.list-des {
    width: 530px;
    flex-wrap: wrap;
    margin-bottom: 10px;
}
.list {
    font-family: HarmonyOS_Sans;
    font-size: 28px;
    color: rgba(0, 0, 0, 0.6);
    letter-spacing: 0;
    line-height: 35px;
    font-weight: 400;
    padding-bottom: 2px;
}
/*switch开关样式代码*/
.list-right {
    justify-content: flex-end;
    width: 115px;
    min-height: 100px;
    align-items: center;
}
.switch-list {
    width: 115px;
    height: 120px;
}
.list-icon {
    width: 14px;
    height: 26px;
    right: 20px;
}

js代码:

export default {
    props: {
        //数据绑定
        title: {
            default: ''
        },
        //数据绑定
        subheading: {
            default: ''
        },
        //true是switch开关,false是图标
        whether: {
            default: true,
            type:Boolean
        },
        //判断是不是switch开关列表,不是就加点击阴影事件
        start: {
            default: true,
            type:Boolean
        },

    },
    computed: {
        //判断是不是switch开关列表,不是就加点击阴影事件
        start() {
            return  !this.whether
        },
    },
    /**
     * 切换开关
     */
    switchHandle({checked: checkedValue}) {
        this.$emit('switchHandle', checkedValue);
        this.checkStatus = checkedValue;
    },
};

引入组件代码,实现列表功能:

hml代码:

  <element name="list-page" src="../../common/listitem/listitem.hml"></element>
<div class="container">
      <list-page whether="{{ true }}"
          @switch-handle="showDialog"
          title="标题1"
          subheading="副文本">
    </list-page>
    <list-page whether="{{ true }}"
          title="标题2">
    </list-page>
    <list-page whether="{{ false }}"
          title="标题3">
    </list-page>
    <list-page whether="{{ false }}"
          title="标题4"
          subheading="副文本">
    </list-page>
</div>

css代码:

 
.container {
    flex-direction: column;
    color: #fff;
    background-color: #fff;
    overscroll-effect: spring;
}

效果图为:

在标题1加弹窗:

hml代码:

<!--标题1的弹窗-->
    <dialog id="dataRoamDialog" class="dialog-main">
        <div class="dialog-div roaming">
            <text class="text ">什么弹窗</text>
            <div class="inner-txt">
                <text class="txt distance">弹窗</text>
            </div>
            <!--确定取消开关-->
            <div class="inner-btn">
                <button type="capsule"
                        value="确定"
                        onclick="setList"
                        class="btn-txt">
                </button>
                <div class="btn-l"></div>
                <button type="capsule"
                        value="取消"
                        onclick="setList"
                        class="btn-txt">
                </button>
            </div>
        </div>
    </dialog>

css代码:

 
/*弹窗样式*/
.dialog-main {
    width: 95%;
}
.dialog-div {
    flex-direction: column;
    align-items: flex-start;
}
.roaming {
    height: 340px;
}
.text {
    font-family: HarmonyOS_Sans_Medium;
    font-size: 36px;
    color: rgba(0, 0, 0, 0.9);
    letter-spacing: 0;
    line-height: 38px;
    font-weight: bold;
    height: 112px;
    padding: 40px 0 0 40px;
}
.inner-txt {
    width: 90%;
}
.txt {
    font-family: HarmonyOS_Sans;
    font-size: 32px;
    color: rgba(0, 0, 0, 0.9);
    letter-spacing: 0;
    line-height: 38px;
    font-weight: 400;
    flex: 1;
    height: 75px;
    justify-content: space-between;
    font-family: PingFangSC-Regular;
}
.distance {
    padding-left: 40px;
    margin-top: 20px;

.inner-btn {
    width: 100%;
    height: 120px;
    line-height: 80px;
    justify-content: center;
    align-items: center;
    margin: 10px 20px 0 20px;
}
.btn-txt {
    width: 230px;
    height: 80px;
    font-size: 32px;
    text-color: #1e90ff;
    background-color: #fff;
    text-align: left;
    align-items: center;
    flex: 1;
    text-align: center;
}
.btn-l {
    width: 2px;
    height: 50px;
    background-color: #ccc;
    margin: 0 10px;
}

js代码:

 
export default {
    /**
     * 标题1弹窗开启
     */
    showDialog() {
            this.$element('dataRoamDialog').show();
    },
    /**
     * 标题1弹窗取消
     */
    setList() {
        this.$element('dataRoamDialog').close();
    },
}

效果图:

总结

以上是所有的代码,写这个不难。主要用到了数据绑定跟三元运算和弹窗组件。相当于学习了鸿蒙的开发,自己尝试封装,让自己更加了解鸿蒙开发。本次分享希望对大家的学习有所帮助。



Tags:HarmonyOS   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
华为HarmonyOS NEXT将全面开放
华为全新的HarmonyOS NEXT将在2024年第一季度面向所有开发者开放。该系统仅支持鸿蒙HAP格式,并标志着鸿蒙生态和HarmonyOS的进一步演进。作为华为鸿蒙操作系统的新篇章,Harmon...【详细内容】
2024-01-05  Search: HarmonyOS  点击:(73)  评论:(0)  加入收藏
纯血鸿蒙来了!HarmonyOS NEXT将于一季度开放:华为彻底与安卓划清界限
快科技1月4日消息,根据华为规划,全新HarmonyOS NEXT开发者预览版,将在今年第一季度面向所有开发者开放。而在1月18日,华为将举办鸿蒙重要活动,届时将揭秘鸿蒙生态和HarmonyOS NEX...【详细内容】
2024-01-04  Search: HarmonyOS  点击:(53)  评论:(0)  加入收藏
华为HarmonyOS 4升级进展公布:12款老机型公测招募
12月25日,手机中国了解到,HarmonyOS官方公布HarmonyOS 4百机升级新进展。官方表示12款手机即日起开启HarmonyOS 4花粉Beta招募活动,感兴趣的小伙伴请及时关注参加。截止目前,已...【详细内容】
2023-12-25  Search: HarmonyOS  点击:(77)  评论:(0)  加入收藏
HarmonyOS登陆PC:这不是挑战,这是求活!
近日,中国深圳凯虹数字产业发展有限公司首席执行官王成录宣布,鸿蒙操作系统将登陆PC,这一消息引发了广泛的关注和讨论。这一举措可能会对PC行业的前景产生深远的影响,尤其是对于...【详细内容】
2023-09-04  Search: HarmonyOS  点击:(157)  评论:(0)  加入收藏
HarmonyOS开发第一步,熟知开发工具DevEco Studio
俗话说的好,工欲善其事,必先利其器,走进HarmonyOS第一步,开发工具必须先行,当然了,关于开发工具的使用,官网和其他的博客也有很多的讲解,但是并没有按照常用的功能进行概述,如果需要...【详细内容】
2023-08-22  Search: HarmonyOS  点击:(205)  评论:(0)  加入收藏
华为 Mate40 系列等机型获推鸿蒙 HarmonyOS 4.0.0.111 版本更新
IT之家 8 月 18 日消息,据IT之家网友反馈,华为P60/P50 / Mate40 系列等机型已推送 HarmonyOS 4.0.0.111 版本更新,安装包大小在 1.8GB 左右。IT之家附主要更新内容:新增时尚画册...【详细内容】
2023-08-18  Search: HarmonyOS  点击:(305)  评论:(0)  加入收藏
HarmonyOS 4之后,留给小米OV的时间不多了
图片来源@视觉中国文 | 自象限,作者|罗辑华为发布新系统成为了当红炸子鸡。8月4日,华为在东莞松山湖总部举行了华为开发者大会2023,正式发布了全新升级的HarmonyOS 4。除了各项...【详细内容】
2023-08-11  Search: HarmonyOS  点击:(85)  评论:(0)  加入收藏
华为 HarmonyOS 4 搭上的星闪技术,原来这么牛
都说无线化是未来科技的趋势,但很多时候无线设备的实际体验,却往往一言难尽。比如当你游戏来到关键时刻,却因为无线鼠标延迟了一下而痛失好局&hellip;&hellip;当你开会时要同时...【详细内容】
2023-08-09  Search: HarmonyOS  点击:(290)  评论:(0)  加入收藏
剔除安卓AOSP代码!“纯血鸿蒙”HarmonyOS NEXT首发体验出炉
科技8月6日消息,近日,华为公布将推出面向开发者的HarmonyOS NEXT开发预览版。目前,根据鹏鹏君驾到等数码博主的消息,HarmonyOS NEXT的首批体验已经出炉。据悉,HarmonyOS NEXT最大...【详细内容】
2023-08-06  Search: HarmonyOS  点击:(129)  评论:(0)  加入收藏
华为发布HarmonyOS 4:更好玩、更流畅、更安全
在8月4日的华为开发者大会2023(HDC.Together)大会上,HarmonyOS 4正式发布。自2019年发布以来,HarmonyOS一直以用户为中心,经历四年多的发展HarmonyOS已构建起全新的智慧生态体系,...【详细内容】
2023-08-05  Search: HarmonyOS  点击:(76)  评论:(0)  加入收藏
▌简易百科推荐
OpenHarmony - 基于ArkUI框架实现日历应用
前言对于刚刚接触OpenHarmony应用开发的开发者,最快的入门方式就是开发一个简单的应用,下面记录了一个日历应用的开发过程,通过日历应用的开发,来熟悉基本图形的绘制,ArkUI的组件...【详细内容】
2024-01-16    51CTO  Tags:OpenHarmony   点击:(54)  评论:(0)  加入收藏
鸿蒙工程师,熬来了「造富时代」
  作者|张俊  来源|新浪科技  ID|techsina  “套壳安卓”的质疑言犹在耳,如今华为正在计划将鸿蒙OS与安卓完全脱离。  此前,鸿蒙OS为了迅速扩大用户规模,采取了兼容安卓...【详细内容】
2023-11-20    锌财经  Tags:鸿蒙   点击:(213)  评论:(0)  加入收藏
OpenHarmony:如何使用HDF驱动控制LED灯
一、程序简介该程序是基于OpenHarmony标准系统编写的基础外设类:RGB LED。目前已在凌蒙派-RK3568开发板跑通。详细资料请参考官网:https://gitee.com/Lockzhiner-Electronics/...【详细内容】
2023-09-08    51CTO  Tags:OpenHarmony   点击:(263)  评论:(0)  加入收藏
深入了解华为OpenHarmony开源系统的架构与功能
当下最火的科技圈新闻,莫过于华为即将发布的Mate 60系列手机,但是今天摸鱼君不讲这些,毕竟我也没抢到,我也不是专业测评。但是以我所长说说它搭载鸿蒙系统的一些内容。 鸿蒙系...【详细内容】
2023-09-07  摸鱼IT  微信公众号  Tags:OpenHarmony   点击:(208)  评论:(0)  加入收藏
鸿蒙操作系统开发 搭建环境
2019年8月9日,华为在东莞举行华为开发者大会,正式发布鸿蒙操作系统;2020年9月推出了鸿蒙2.0,全面使能全场景生态,具备跨设备、服务流转、极速直达、可视可说、隐私安全五大能力。...【详细内容】
2023-09-07  清华计算机学堂  微信公众号  Tags:鸿蒙   点击:(198)  评论:(0)  加入收藏
OpenHarmony中使用MQTT
MQTT**(**消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而...【详细内容】
2023-08-29    51CTO  Tags:OpenHarmony   点击:(432)  评论:(0)  加入收藏
OpenHarmony组件复用示例
OpenHarmony组件复用示例 摘要:在开发应用时,有些场景下的自定义组件具有相同的组件布局结构,仅有状态变量等承载数据的差异。这样的组件缓存起来,需要使用到该组件时直接复用,...【详细内容】
2023-08-28  zhushangyuan  51CTO  Tags:OpenHarmony   点击:(352)  评论:(0)  加入收藏
HarmonyOS开发第一步,熟知开发工具DevEco Studio
俗话说的好,工欲善其事,必先利其器,走进HarmonyOS第一步,开发工具必须先行,当然了,关于开发工具的使用,官网和其他的博客也有很多的讲解,但是并没有按照常用的功能进行概述,如果需要...【详细内容】
2023-08-22  程序员一鸣  今日头条  Tags:HarmonyOS   点击:(205)  评论:(0)  加入收藏
鸿蒙元服务开发实例:桌面卡片上的电动自行车助手E-Bike
E-Bike是一款基于HarmonyOS开发的元服务,以万能卡片的形式给骑行提供便捷服务。首先需要完成HarmonyOS开发环境搭建。一、元服务E-Bike简介E-Bike是一款基于HarmonyOS开发的...【详细内容】
2023-08-16    51CTO  Tags:鸿蒙   点击:(302)  评论:(0)  加入收藏
OpenHarmony运行docker详细步骤
本文将介绍如何在OpenHarmony内核上运行docker容器。 目录 1.环境和设备 2.准备支持Docker容器的OpenHarmony内核 3.编译烧录镜像 4.安装docker容器引擎组件 5.格式...【详细内容】
2023-07-28  离北况归  51CTO  Tags:OpenHarmony   点击:(399)  评论:(0)  加入收藏
站内最新
站内热门
站内头条