鸿蒙开发:了解分割线

前言

本文基于Api13

分割线的场景非常之多,特别常见于列表中,随便打开一个应用,都能够找到分割线的足迹,虽然分割线用处很多,但是,在实际的开发中,如何去正确的使用分割线呢,这是我们要谈的问题。

比如一个简简单单的列表,分割线该如何绘制?

肯定很多人都会想到,使用列表中自带的分割线属性divider,使用它可以很快速的实现一个分割线,代码如下:

TypeScript 复制代码
Column() {
      List() {
        ForEach(this.dataList, (item: string) => {
          ListItem() {
            Text(item)
              .width("100%")
              .height(50)
              .textAlign(TextAlign.Center)
          }
        })
      }
      .divider({
        color: Color.Gray,
        strokeWidth: 1,
      })
    }
    .height('100%')
    .width('100%')

运行之后效果:

如果,我的分割线不是一条规则的线呢?比如是一个图片,比如是一段虚线,再比如,在条目的最后,我也想要分割线呢?显然在使用列表自带的分割线属性divider就无法满足了。

边框样式border

每个组件都有一个通用属性border,使用它可以很方便的实现一个边框样式,可以设置边框粗细,颜色,圆角等等属性。

比如,设置一个边框为1,颜色为灰色的边框:

TypeScript 复制代码
 Column() {

      }.width("100%")
      .height(50)
      .border({ width: 1, color: Color.Gray })

效果如下:

再比如,加一个圆角度数:

TypeScript 复制代码
 Column() {

      }.width("100%")
      .height(50)
      .border({ width: 1, color: Color.Gray, radius: 10 })

效果如下:

当然了,你也可以设置其它的类型,比如虚线:

TypeScript 复制代码
 Column() {

      }.width("100%")
      .height(50)
      .border({ width: 1, color: Color.Gray, radius: 10,style:BorderStyle.Dashed})

我们看下效果:

一般设置分割线,在底部,我们直接给条目的组件设置底部的分割线就行:

TypeScript 复制代码
List() {
        ForEach(this.dataList, (item: string) => {
          ListItem() {
            Text(item)
              .width("100%")
              .height(50)
              .textAlign(TextAlign.Center)
              .border({ width: { bottom: 1 }, color: Color.Gray })
          }
        })
      }

可以看到,实现的效果和组件自带的分割线属性是一样,而且最后一个条目也完美的补上了。

分割线组件Divider

要不说,还是鸿蒙呢,对于一个分割线也提供了一个组件出来,这是生怕开发者不会绘制啊,这个组件和其他的组件使用方式基本一致,但就一个作用,就是展示分割线。

TypeScript 复制代码
Divider()
        .strokeWidth(10)
        .color(Color.Gray)
属性 类型 概述
strokeWidth number /string 设置分割线的宽度
color ResourceColor 设置分割线的颜色
vertical boolean 设置分割线的方向,使用水平分割线还是垂直分割线。false:水平分割线;true:垂直分割线。
lineCap LineCapStyle 设置分割线的端点样式

还是上述的案例,我们是用Divider组件设置一下分割线:

TypeScript 复制代码
List() {
        ForEach(this.dataList, (item: string) => {
          ListItem() {
            Column() {
              Text(item)
                .width("100%")
                .height(50)
                .textAlign(TextAlign.Center)
              Divider()
                .strokeWidth(10)
                .color(Color.Gray)
            }
          }
        })
      }

我们看下最终的效果:

相关总结

在实际的开发中,如果自带的分割线能够满足我们的需求,以自身的分割线属性为主,如果不满足,我们可以使用组件进行绘制。

一般来说,关于Divider组件很少用于列表中,一般都是固定UI中需要一个分割线,这时就可以进行使用。

相关推荐
贾伟康7 小时前
HarmonyOS API 26 嵌套 Navigation:getParent、父子栈边界与返回分发
harmonyos·arkts·navigation·嵌套路由·navpathstack
行者-全栈开发8 小时前
【鸿蒙心迹】多线程并发实战——TaskPool 与 Worker 选型与踩坑(HarmonyOS 7.x)
华为·harmonyos·多线程并发·worker·taskpool·线程通信·harmonyos 并发
OH_TPC10 小时前
@ohos/aki 源码解读(一):一行绑定背后,宏、模板与索引分发
harmonyos
贾伟康10 小时前
【解压时刻|13】HarmonyOS ArkTS 启动链路审计:从 EntryAbility、AppStore 到 Navigation 首屏
harmonyos·arkts·appstorage·应用启动·entryability
贾伟康11 小时前
【古诗词闯关|12】HarmonyOS ArkTS 单页组件拆分实战:降低题库、闯关与结果弹层耦合
harmonyos·arkts·状态管理·arkui·组件化
威哥爱编程13 小时前
模拟面试智能体开发实战 07:答完一题就点评一题,结构化输出给分建议,让每道题都变成复盘
python·agent·harmonyos
威哥爱编程14 小时前
模拟面试智能体开发实战 08:总评报告先过三道闸,防泄题防夸大防错建议,才敢发到候选人手上
python·agent·harmonyos
熊猫钓鱼>_>1 天前
普通用户视角的端侧智能体验手记【鸿蒙心迹】
开发语言·人工智能·华为·智能手机·性能优化·ai编程·harmonyos
KevinChaos1 天前
阳台小花园开发手记 05|HarmonyOS 7.0 互动卡片:动效进出衔接
华为·harmonyos
WHMONY1 天前
大一独立开发鸿蒙原生 AI Agent:聊聊我为什么死磕端侧模型与“技术平权”
harmonyos