鸿蒙开发-Divider 组件

在 ArkTS 中,Divider组件是用于在界面上显示分割线的组件,以下是其详细介绍:

基本功能

Divider组件主要用于将页面中的不同部分进行视觉上的分隔,使页面布局更加清晰和有条理,增强用户界面的可读性和美观性。

常用属性

color:用于设置分割线的颜色,接受ResourceColor类型的值,可以是系统预定义的颜色资源,也可以是自定义的颜色值。例如:

Divider().color(Color.Gray)

strokeWidth:用于设置分割线的宽度,接受number类型的值,单位为逻辑像素。例如:

Divider().strokeWidth(2)

startMargin和endMargin:分别用于设置分割线起始和结束位置的外边距,接受number类型的值,单位为逻辑像素。可以通过设置这两个属性来调整分割线在水平方向上的位置。例如:

Divider().startMargin(10).endMargin(10)

布局方式

Divider

组件在布局中通常以水平或垂直方向排列,具体取决于其所在父容器的布局方式。

在水平布局的容器中,Divider组件默认以水平方向显示分割线,将容器中的内容在垂直方向上进行分隔。

在垂直布局的容器中,Divider组件默认以垂直方向显示分割线,将容器中的内容在水平方向上进行分隔。

颜色自定义

除了使用color属性设置单一颜色外,还可以通过linearGradient或radialGradient来实现渐变颜色效果。示例代码如下:

// 线性渐变
let linearGradient = new LinearGradient({
  startPoint: { x: 0, y: 0 },
  endPoint: { x: 1, y: 0 },
  colors: [Color.Red, Color.Yellow]
})
Divider().linearGradient(linearGradient)

// 径向渐变
let radialGradient = new RadialGradient({
  center: { x: 0.5, y: 0.5 },
  radius: 0.5,
  colors: [Color.Blue, Color.Green]
})
Divider().radialGradient(radialGradient)

虚线样式自定义

可以使用dashArray和dashOffset属性来设置分割线为虚线样式并进行自定义。其中,dashArray用于指定虚线的线段长度和间隔长度数组,dashOffset用于设置虚线的偏移量。示例代码如下:

Divider().strokeWidth(2).dashArray([5, 3]).dashOffset(2)

两端样式自定义

添加箭头:可以在分割线的两端添加箭头等装饰元素来丰富其样式。这通常需要结合自定义绘制来实现。例如,可以使用Canvas绘制一个带有箭头的分割线。

@Entry
@Component
struct MyComponent {
  build() {
    Column() {
      CustomDivider().width('100%').height(10)
      Text('这是另一部分内容').fontSize(16)
    }.width('100%').height('100%')
  }
}

@Component
struct CustomDivider extends Divider {
  drawCanvas(ctx: CanvasRenderingContext2D) {
    super.drawCanvas(ctx);
    ctx.beginPath();
    ctx.moveTo(0, 5);
    ctx.lineTo(100, 5);
    ctx.lineWidth = 2;
    ctx.strokeStyle = '#FF0000';
    ctx.stroke();
    ctx.beginPath();
    ctx.moveTo(0, 5);
    ctx.lineTo(10, 0);
    ctx.lineTo(10, 10);
    ctx.closePath();
    ctx.fillStyle = '#FF0000';
    ctx.fill();
    ctx.beginPath();
    ctx.moveTo(100, 5);
    ctx.lineTo(90, 0);
    ctx.lineTo(90, 10);
    ctx.closePath();
    ctx.fillStyle = '#FF0000';
    ctx.fill();
  }
}

自定义形状:通过继承Divider组件并重写drawCanvas方法,可以实现完全自定义的分割线形状。例如,绘制一个波浪线形状的分割线。

@Component
struct WaveDivider extends Divider {
  drawCanvas(ctx: CanvasRenderingContext2D) {
    super.drawCanvas(ctx);
    let width = 100;
    let height = 10;
    let offset = 0;
    let amplitude = 3;
    ctx.beginPath();
    for (let x = 0; x <= width; x++) {
      let y = height / 2 + Math.sin((x + offset) * (2 * Math.PI / width)) * amplitude;
      if (x === 0) {
        ctx.moveTo(x, y);
      } else {
        ctx.lineTo(x, y);
      }
    }
    ctx.lineWidth = 2;
    ctx.strokeStyle = '#00FF00';
    ctx.stroke();
  }
}

与其他组件组合自定义

可以将Divider组件与其他组件如Image、Text等组合使用,实现更丰富的样式效果。例如,在分割线上添加文字说明或图标。

Row() {
  Divider().width('50%').strokeWidth(1).color(Color.Gray)
  Text('分割线中间的文字').fontSize(14).margin({ left: 10, right: 10 })
  Divider().width('50%').strokeWidth(1).color(Color.Gray)
}

示例代码

以下是一个简单的示例,展示了Divider组件在不同场景下的使用:

@Entry
@Component
struct MyComponent {
  build() {
    Column() {
      Text('这是一部分内容').fontSize(16)
      Divider().color(Color.Green).strokeWidth(3).startMargin(20).endMargin(20)
      Text('这是另一部分内容').fontSize(16)
    }.width('100%').height('100%')
  }
}

在上述示例中,Divider组件在一个垂直布局的Column容器中使用,将两段文本内容在垂直方向上进行了分隔,分割线的颜色为绿色,宽度为 3 个逻辑像素,并且设置了一定的外边距。

注意事项

  • 当在复杂的布局中使用Divider组件时,需要注意其与其他组件的排列和间距关系,确保分割线的位置和样式符合整体页面设计的要求。

  • 不同设备和屏幕分辨率可能会对分割线的显示效果产生影响,需要在实际测试中进行调整和优化。
    在这里插入图片描述

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

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

相关文章

SpringBoot实战——个人博客项目

目录 一、项目简介 ?二、项目整体架构 数据库模块 后端模块 前端模块 ?三、项目具体展示 ?四、项目的具体实现 1、一些准备工作 ??数据库、数据表的创建 ??设置数据库和MyBatis的配置 ??将前端项目引入到当前项目中 2、登录注册模块 ??实体类的创建 ?…

利用sda剩余空间,扩容(lvm)

r如果余空间没有使用&#xff0c;直接扩容 pvdisplay vgdisplay pvresize /dev/sda3 扩展逻辑卷的大小&#xff1a; lvextend -l 100%FREE /dev/mapper/openeuler-root 对于ext4文件系统&#xff1a; resize2fs /dev/mapper/vg_openeuler-openeuler--root 对于xfs文件系…

【Golang】Go语言编程思想(一):接口

接口 接口的概念 现在我们要实现一个函数&#xff0c;用于对给定的 url 进行解析&#xff0c;具体的代码实现如下&#xff1a; package mainimport ("fmt""io""net/http" )func retrieve(url string) string {resp, err : http.Get(url)if er…

智能文档解析综述:结构化信息提取的技术、挑战与前景

综述论文&#xff1a;https://arxiv.org/abs/2410.21169 摘要 文档解析对于将非结构化和半结构化文档&#xff08;如合同、学术论文和发票&#xff09;转换为结构化、机器可读的数据至关重要。通过从非结构化输入中提取可靠的结构化数据&#xff0c;文档解析为众多应用提供了极…

如何将CSDN博客下载为PDF文件

1.打开CSDN文章内容 2.按键盘上的f12键&#xff08;或者右键—审查元素&#xff09;进入浏览器调试模式&#xff0c;点击控制台&#xff08;Console&#xff09;进入控制台 3.在控制台输入以下代码&#xff0c;回车 4.在弹出的打印页面中将布局设置成横向&#xff0c;纵向会…

C# GDI绘制的小熊进度条

C# GDI小熊进度条 1、添加自定义控件winform using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;…

嵌入式入门Day25

数据结构Day 6,IO Day1 查找算法顺序查找折半查找&#xff08;二分查找&#xff09;哈希查找 IO概念标准IO创建递归索引&#xff08;用于查询结构体定义&#xff09; 文件IO标准IO缓冲区指针相关函数 查找算法 顺序查找 关键字&#xff1a;分为主关键字和次关键字主关键字&am…

操作系统——虚拟内存管理

笔记内容及图片整理自XJTUSE “操作系统” 课程ppt&#xff0c;仅供学习交流使用&#xff0c;谢谢。 背景 进程必须全部放入物理内存后方可运行&#xff0c;这个规则将程序大小限制为物理内存大小。许多情况下并不需要将整个程序置于内存中&#xff0c;比如程序几乎从不执行但…

Java 在Json对象字符串中查找和提取特定的数据

1、在处理JSON数据时&#xff0c;需要提出个别字段的值&#xff0c;通过正则表达式提取特定的数据 public static void main(String[] args) {//定义多个JSON对象字符串类型&#xff0c;假设每个对象有a,b,c 字段String strJson "{\"a\":1.23,\"b\"…

进度与预算

一个项目&#xff0c;如果进度上可以按时完成&#xff0c;一般来说预算不会超标&#xff0c;或者超标幅度有限。 一个项目&#xff0c;如果进度上严重超期&#xff0c;预算基本上会超标&#xff0c;而且超标很大。 现在很多项目&#xff0c;人力成本占比都比较大&#xff0c…

Ungoogled Chromium127编译指南 Windows篇 - 安装Visual Studio 2022(六)

1. 引言 在编译Ungoogled Chromium之前&#xff0c;正确安装和配置Visual Studio 2022是至关重要的一步。作为主要的开发环境&#xff0c;Visual Studio不仅提供了必要的编译工具&#xff0c;还包含了大量构建过程中需要的组件和库。本文将详细介绍如何在Windows系统上安装和配…

电子商务人工智能指南 3/6 - 聊天机器人和客户服务

介绍 81% 的零售业高管表示&#xff0c; AI 至少在其组织中发挥了中等至完全的作用。然而&#xff0c;78% 的受访零售业高管表示&#xff0c;很难跟上不断发展的 AI 格局。 近年来&#xff0c;电子商务团队加快了适应新客户偏好和创造卓越数字购物体验的需求。采用 AI 不再是一…

精确的单向延迟测量:使用普通硬件和软件

论文标题&#xff1a;Precise One-way Delay Measurement with Common Hardware and Software&#xff08;精确的单向延迟测量&#xff1a;使用普通硬件和软件&#xff09; 作者信息&#xff1a;Maciej Muehleisen 和 Mazen Abdel Latif&#xff0c;来自Ericsson Research Eri…

字符串的特征

底层是char类型的数组 char[] replace()&#xff1a;替换 split()&#xff1a;切分 indexOf()&#xff1a;第一个字符所在位置&#xff0c;从0开始算 substring(3, 6)&#xff1a;字符串截取&#xff0c;包括3不包括6 字符串不可变 本质上是数组&#xff0c;数组是固定值…

三维扫描检测在汽车制造中的应用

三维扫描&#xff0c;通过先进三维扫描技术获取产品和物体的形面三维数据&#xff0c;建立实物的三维图档&#xff0c;满足各种实物3D模型数据获取、三维数字化展示、3D多媒体开发、三维数字化存档、逆向设计、产品开发、直接3D打印制造或辅助加工制造等一系列的应用。 三维扫描…

【已解决】黑马点评项目中启动Spring Boot服务失败,com.sun.tools.javac.tree.JCTree qualid

黑马点评项目中启动Spring Boot服务失败 报错提示 java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field com.sun.tools.javac.tree.JCTree qualid这是因为 lombok 版本不兼容造成的 找到 pom.xml 文件&#xff0…

Netty入门(快速了解以及使用netty)

二. Netty 入门 1. 概述 1.1 Netty 是什么&#xff1f; Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.Netty 是一个异步的、基于事件驱动的网络应用框架&…

Python办公—DataMatrix二维条码制作

目录 专栏导读1、库的介绍2、库的安装3、核心代码4、完整代码总结专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注 👍 该系列文章专栏:请点击——>Python办公自动化专…

前缀和(八)矩阵区域和

1314. 矩阵区域和 给你一个 m x n 的矩阵 mat 和一个整数 k &#xff0c;请你返回一个矩阵 answer &#xff0c;其中每个 answer[i][j] 是所有满足下述条件的元素 mat[r][c] 的和&#xff1a; i - k < r < i k, j - k < c < j k 且(r, c) 在矩阵内。 示例 1&…

Nginx日常运维方法Linux版

关注 工 仲 好&#xff1a;IT运维大本营1&#xff0c;安装&#xff1f; 下载RPM&#xff1a;wget http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.10.0-1.el7.ngx.x86_64.rpm 离线包用其它方式下载也可以。 安装&#xff1a;rpm -ivh nginx-1.10.0-1.el7.ngx.x86_…