当前位置: 首页 > news >正文

HarmonyOS ArkUI(基于ArkTS) 开发布局 (中)

HarmonyOS ArkUI(基于ArkTS) 开发布局 (上)

四 层叠布局 (Stack)

层叠布局(StackLayout)用于在屏幕上预留一块区域来显示组件中的元素,提供元素可以重叠的布局。层叠布局通过Stack容器组件实现位置的固定定位与层叠,容器中的子元素依次入栈,后一个子元素覆盖前一个子元素,子元素可以叠加,也可以设置位置。

层叠布局具有较强的页面层叠、位置定位能力,其使用场景有广告、卡片层叠效果等

@Entry
@Component
struct Index {build() {Stack(){Column().backgroundColor('#ff6700').width(300).height(300)Column().backgroundColor('blue').width(100).height(100)}.height('100%').width('100%')}
}

后一个元素会覆盖前一个元素,有点类似于小时候玩过的套娃娃,是不是很有趣?

alignContent 对齐方式

一共九种,Top  Bottom Start End Center  TopStart TopEnd BottomStart BottomEnd

Stack({ alignContent: Alignment.样式 })

zIndex 设置层级

子元素(){}.zIndex( 5)   层级越高优先级越高,同级后面元素比前面元素高 

五 弹性布局 (Flex)

基本等价于css中的flex了

direction 布局方向

Flex({ direction: FlexDirection.Row })   除了Row还可以是RowReverse Column ColumnReverse

@Entry
@Component
struct Index {build() {Flex({}){Column().backgroundColor('#ff6700').width(100).height(100)Column().backgroundColor('blue').width(100).height(100)}.height('100%').width('100%')}
}

wrap 布局换行

Flex({ wrap: FlexWrap.NoWrap })  还可以选  WrapReverse  Wrap

justifyContent 主轴对齐方式

Flex({justifyContent:FlexAilgn.Start})

alignItems 交叉轴对齐方式

  • Flex({alignItems:ItemAlign.Auto})
  • ItemAlign.Auto:使用Flex容器中默认配置。
  • ItemAlign.Start:交叉轴方向首部对齐。
  • ItemAlign.Center:交叉轴方向居中对齐。
  • ItemAlign.End:交叉轴方向底部对齐。
  • ItemAlign.Stretch:交叉轴方向拉伸填充,在未设置尺寸时,拉伸到容器尺寸。
  • temAlign. Baseline:交叉轴方向文本基线对齐。

子元素可以通过 . alignSelf (值同上) 的方式 设置独立的对齐方式优先于全局

alignContent 内容对齐

可以通过alignContent参数设置子元素各行在交叉轴剩余空间内的对齐方式,只在多行的Flex布局中生效,可选值有:参考 justifyContent主轴对齐

六 相对布局 (RelativeContainer)

笔者不会,等会了在补充,上面是官方链接

七 栅格布局 (GridRow/GridCol)

栅格布局是一种通用的辅助定位工具,对移动设备的界面设计有较好的借鉴作用

栅格容器GridRow

栅格系统以设备的水平宽度(屏幕密度像素值,单位vp)作为断点依据,定义设备的宽度类型,形成了一套断点规则。开发者可根据需求在不同的断点区间实现不同的页面布局效果

断点名称取值范围(vp)设备描述
xs[0, 320)最小宽度类型设备。
sm[320, 520)小宽度类型设备。
md[520, 840)中等宽度类型设备。
lg[840, +∞)大宽度类型设备。

breakpoints自定义修改断点的取值范围

最多支持6个断点,(xs, sm, md, lg, xl, xxl)设备的布局设置。

breakpoints: {value: ['320vp', '520vp', '840vp', '1080vp']}0 -322 xs 320 - 520 sm 以此类推

columns 布局的总列数

GridRow({ columns: 12 }) 默认12列

direction 排列方向

可选值: Row RowReverse

GridRow({ direction: GridRowDirection.Row }){}

gutter 子组件间距

GridRow中通过gutter属性设置子元素在水平和垂直方向的间距。

 GridRow({ gutter: 10 }){}GridRow({ gutter: { x: 10, y: 10 } }){}俩种写法,上面的是等价的

子组件GridCol

GridCol组件作为GridRow组件的子组件,通过给GridCol传参或者设置属性两种方式,设置span(占用列数),offset(偏移列数),order(元素序号)的值。

span

let Gspan:Record<string,number> = { 'xs': 1, 'sm': 2, 'md': 3, 'lg': 4 }
GridCol({ span: 2 }){}
GridCol({ span: { xs: 1, sm: 2, md: 3, lg: 4 } }){}
GridCol(){}.span(2)
GridCol(){}.span(Gspan)

offset

栅格子组件相对于前一个子组件的偏移列数,默认为0。

order

栅格子组件的序号,决定子组件排列次序。当子组件不设置order或者设置相同的order, 子组件按照代码顺序展示。当子组件设置不同的order时,order较小的组件在前,较大的在后。

媒体查询 (@ohos.mediaquery)

跟传统的ccs媒体查询不同,它类似于js监听条件然后做出改变

语法:[媒体类型media-type] [媒体逻辑操作media-logic-operations] [媒体特征(media-feature)]

例如:

  • screen and (round-screen: true) :表示当设备屏幕是圆形时条件成立。

  • (max-height: 800px) :表示当高度小于等于800px时条件成立。

  • (height <= 800px) :表示当高度小于等于800px时条件成立。

  • screen and (device-type: tv) or (resolution < 2) :表示包含多个媒体特征的多条件复杂语句查询,当设备类型为tv或设备分辨率小于2时条件成立。

  • (dark-mode: true) :表示当系统为深色模式时成立。

import { mediaquery } from '@kit.ArkUI'; //引入媒体查询
@Entry
@Component
struct Index {@State color: string = '#DB7093';listener: mediaquery.MediaQueryListener = mediaquery.matchMediaSync('(orientation: landscape)');//设置监听onPortrait(mediaQueryResult:mediaquery.MediaQueryResult) {if (mediaQueryResult.matches as boolean) { // 若设备为横屏状态,更改相应的页面布局this.color = '#FFD700';} else {this.color = '#DB7093';}}aboutToAppear() {// 绑定当前应用实例// 绑定回调函数this.listener.on('change', (mediaQueryResult: mediaquery.MediaQueryResult) => {this.onPortrait(mediaQueryResult)});}aboutToDisappear() {// 解绑listener中注册的回调函数this.listener.off('change');}build() {Flex({}){Column().backgroundColor(this.color).width(100).height(100)}.height('100%').width('100%')}
}

相关文章:

HarmonyOS ArkUI(基于ArkTS) 开发布局 (中)

HarmonyOS ArkUI(基于ArkTS) 开发布局 &#xff08;上&#xff09; 四 层叠布局 (Stack) 层叠布局&#xff08;StackLayout&#xff09;用于在屏幕上预留一块区域来显示组件中的元素&#xff0c;提供元素可以重叠的布局。层叠布局通过Stack容器组件实现位置的固定定位与层叠&…...

org.springframework.context.support.ApplicationListenerDetector 详细介绍

一&#xff0c;功能介绍 early post-processor for detecting inner beans as ApplicationListeners 早期的PostProcessor用来检测并处理内部&#xff08;inner&#xff09;bean作为 ApplicationListeners BeanPostProcessor that detects beans which implement the Applica…...

MSTP实验

单点故障---冗余---环路---STP----RSTP-----MSTP MSTP 产生的背景 因为RSTP在局域网内所有VLAN 共享一棵生成树&#xff0c;如果链路被堵塞&#xff0c;将无法承载任何流量&#xff0c;所以为了实现流量负载均衡&#xff0c;MSTP诞生了。 生成树不是基于VLAN运行的&#xff…...

Linux---shell脚本

文章目录 目录 文章目录 前言 一.Shell脚本定义 shell脚本书写规范 shell脚本执行方式 二.Shell变量 变量定义 定义规范 定义方式 变量的运算 数值运算 数值比较 未完待续...... 前言 希望通过本文的学习&#xff0c;你能够掌握Shell脚本的基本知识和实用技巧&#xff0c…...

Android12的ANR解析

0. 参考&#xff1a; ANR分析 深入理解 Android ANR 触发原理以及信息收集过程 1.ANR的触发分类: ANR分为4类&#xff1a; InputDispatchTimeout&#xff1a;输入事件分发超时5s,包括按键和触摸事件。BroadcastTimeout&#xff1a;比如前台广播在10s内未执行完成&#xff0…...

初学人工智不理解的名词3

TTS领域的名词 from gpt-4o 在 TTS&#xff08;文本到语音合成&#xff09; 领域&#xff0c;以下是 CFM、One-Step 蒸馏 和 ReFlow 的含义和作用的详细解释&#xff1a; 1. CFM&#xff08;Consistent Flow Matching&#xff09; Consistent Flow Matching&#xff08;一致流…...

ADS项目笔记 1. 低噪声放大器LNA天线一体化设计

在传统射频结构的设计中&#xff0c;天线模块和有源电路部分相互分离&#xff0c;两者之间通过 50 Ω 传输线级联&#xff0c;这种设计需要在有源电路和天线之间建立无源网络&#xff0c;包括天线模块的输入匹配网络以及有源电路的匹配网络。这些无源网络不仅增加了系统的插入损…...

J.U.C - 深入解读阻塞队列实现原理源码

文章目录 Pre生产者-消费者模式阻塞队列 vs 普通队列JUC提供的7种适合与不同应用场景的阻塞队列插入操作&#xff1a;添加元素到队列中移除操作&#xff1a;从队列中移除元素。 ArrayBlockingQueue源码解析类结构指定初始容量及公平/非公平策略的构造函数根据已有集合初始化队列…...

【大语言模型学习】LORA微调方法

LORA: Low-Rank Adaptation of Large Language Models 摘要 LoRA (Low-Rank Adaptation) 提出了一种高效的语言模型适应方法,针对预训练模型的适配问题: 目标:减少下游任务所需的可训练参数,降低硬件要求。方法:冻结预训练模型权重,注入低秩分解矩阵,从而在不影响推理…...

Spring Boot【一】

Spring Boot全局配置文件 application.properties 是 Spring Boot 的标准配置文件&#xff0c;用于集中管理应用程序的配置属性。它的主要作用是将配置信息与代码分离&#xff0c;使得应用程序更具可维护性和可配置性。 Application.yaml配置文件 YAML文件格式是JSON超集文件…...

H.265流媒体播放器EasyPlayer.js H.264/H.265播放器chrome无法访问更私有的地址是什么原因

EasyPlayer.js H5播放器&#xff0c;是一款能够同时支持HTTP、HTTP-FLV、HLS&#xff08;m3u8&#xff09;、WS、WEBRTC、FMP4视频直播与视频点播等多种协议&#xff0c;支持H.264、H.265、AAC、G711A、MP3等多种音视频编码格式&#xff0c;支持MSE、WASM、WebCodec等多种解码方…...

【大数据学习 | HBASE高级】rowkey的设计,hbase的预分区和压缩

1. rowkey的设计 ​ RowKey可以是任意字符串&#xff0c;最大长度64KB&#xff0c;实际应用中一般为10~100bytes&#xff0c;字典顺序排序&#xff0c;rowkey的设计至关重要&#xff0c;会影响region分布&#xff0c;如果rowkey设计不合理还会出现region写热点等一系列问题。 …...

Dart:字符串

字符串&#xff1a;单双引号 String c hello \c\; // hello c&#xff0c;单引号中使用单引号&#xff0c;需要转义\ String d "hello c"; // hello c&#xff0c;双引号中使用单引号&#xff0c;不需要转义 String e "hello \“c\”"; // hell…...

平衡二叉搜索树之 红黑 树的模拟实现【C++】

文章目录 红黑树的简单介绍定义红黑树的特性红黑树的应用 全部的实现代码放在了文章末尾准备工作包含头文件类的成员变量和红黑树节点的定义 构造函数和拷贝构造swap和赋值运算符重载析构函数findinsert【重要】第一步&#xff1a;按照二叉搜索树的方式插入新节点第二步&#x…...

2:Vue.js 父子组件通信:让你的组件“说话”

上一篇我们聊了如何用 Vue.js 创建一个简单的组件&#xff0c;这次咱们再往前走一步&#xff0c;讲讲 Vue.js 的父子组件通信。组件开发里&#xff0c;最重要的就是让组件之间能够“说话”&#xff0c;数据能流通起来。废话不多说&#xff0c;直接开干&#xff01; 父组件传数据…...

6. Keepalived配置Nginx自动重启,实现7x24提供服务

一. Keepalived配置Nginx自动重启,实现7x24提供服务 1.编写不停的检查nginx服务器状态,停止并重启,重启失败后则停止keepalived脚本 cd /etc/keepalived/ vim check_nginx_alive_or_not.sh #---内容如下:--------------- #!/bin/bash A=`ps -C nginx --no-header |wc -l...

【PS】蒙版与通道

内容1&#xff1a; 、选择蓝色通道并复制&#xff0c;对复制的蓝色通道ctrli进行反向选择&#xff0c;然后ctrll调整色阶。 、选择载入选区&#xff0c;然后点击rgb。 、点击蒙版 、点击云彩图层调整位置 、点击色相/饱和度&#xff0c;适当调整 、最后使用滤镜等功能添加光圈…...

C++创建型模式之生成器模式

解决的问题 生成器模式&#xff08;Builder Pattern&#xff09;主要解决复杂对象的构建问题。当一个对象的创建过程非常复杂&#xff0c;涉及多个步骤和多个部件时&#xff0c;使用生成器模式可以将对象的构建过程与其表示分离&#xff0c;使得同样的构建过程可以创建不同的表…...

鸿蒙NEXT应用示例:切换图片动画

【引言】 在鸿蒙NEXT应用开发中&#xff0c;实现图片切换动画是一项常见的需求。本文将介绍如何使用鸿蒙应用框架中的组件和动画功能&#xff0c;实现不同类型的图片切换动画效果。 【环境准备】 电脑系统&#xff1a;windows 10 开发工具&#xff1a;DevEco Studio NEXT B…...

postgresql(功能最强大的开源数据库)继承特性和分区实现

PostgreSQL实现了表继承&#xff0c;在多重表继承下&#xff0c;对上亿条不同类别的数据条目进行按型号、按月份双层分区管理&#xff0c;既可在总表查阅所有条目的共有字段&#xff0c;也可在各类型字表查询附加字段&#xff0c;非常高效。 分区是通过继承的方式来实现的&…...

2026年主流抓娃娃App大对比,哪个才是你的“抓宝神器”?

在当今快节奏的生活中&#xff0c;年轻人面临着来自学业、工作、社交等多方面的压力。为了缓解这些压力&#xff0c;寻找适合的解压方式成为了大家的共同需求。抓娃娃App作为一种新兴的娱乐方式&#xff0c;正逐渐受到年轻人的喜爱。下面我们就从潮流趋势、科技前沿、行业洞察等…...

Excel MCP Server终极指南:让AI成为你的Excel自动化助手

Excel MCP Server终极指南&#xff1a;让AI成为你的Excel自动化助手 【免费下载链接】excel-mcp-server A Model Context Protocol server for Excel file manipulation 项目地址: https://gitcode.com/gh_mirrors/ex/excel-mcp-server 你是否厌倦了重复的Excel操作&…...

框架式幕墙与单元式幕墙的价格差异

框架式幕墙与单元式幕墙的价格差异 框架式幕墙与单元式幕墙由于结构及安装方式的不同,在价格方面存着很大的差异。主要表现在以下几个方面: 铝型材的用量: 框架式幕墙铝型材用量一般在7—9 kg/平方米左右。 单元式幕墙铝型材用量一般在13—15kg/平方米左右。 两者每平方…...

3D打印乐高手机支架:低成本打造高清视频会议摄像头方案

1. 项目概述与核心思路如果你和我一样&#xff0c;对视频会议、直播时笔记本自带摄像头那“感人”的画质感到无奈&#xff0c;同时又觉得单独购买一个高品质的网络摄像头是一笔不小的开销&#xff0c;那么这个项目绝对值得你花上一个周末的时间来折腾。它的核心思路非常巧妙&am…...

基于IMAP的邮件自动化处理工具mymailclaw配置与实战指南

1. 项目概述&#xff1a;一个轻量级的邮件抓取与处理工具最近在折腾一个需要自动化处理邮件通知的小项目&#xff0c;发现市面上的方案要么太重&#xff0c;要么不够灵活。直到我遇到了psandis/mymailclaw这个项目&#xff0c;它就像一把小巧而锋利的瑞士军刀&#xff0c;专门用…...

Deep Lake:AI数据湖实战指南,解决深度学习数据管理难题

1. 项目概述&#xff1a;当数据湖遇上深度学习如果你在深度学习项目里被数据管理搞得焦头烂额过&#xff0c;那你肯定懂我在说什么。模型训练到一半&#xff0c;发现数据版本不对&#xff0c;或者想对海量图像、视频做快速查询和采样&#xff0c;结果被IO速度卡得死死的。传统的…...

mg3640s,ts8080,ts8100,g5080,g3800,g4800,ix6780,ts8180报错5B00,P07,E08,5b02,1704,1700,5b04佳能V6.200,亲测有用

下载&#xff1a;点这里下载 备用下载&#xff1a;https://pan.baidu.com/s/1WrPFvdV8sq-qI3_NgO2EvA?pwd0000 常见型号如下&#xff1a; G系列 G1000、G1100、G1200、G1400、G1500、G1800、G1900、G1010、G1110、G1120、G1410、G1420、G1411、G1510、G1520、G1810、G1820、…...

Claude模型思维链评估框架claweval:原理、实战与高级定制指南

1. 项目概述&#xff1a;一个专为Claude模型设计的“思维链”评估框架最近在AI应用开发圈里&#xff0c;一个名为claweval的项目开始被频繁提及。如果你正在使用Anthropic的Claude系列模型&#xff08;无论是Claude 3 Opus、Sonnet还是Haiku&#xff09;来构建需要复杂推理能力…...

Linux内核升级C11标准:从C89到现代C语言的演进与实战解析

1. 项目概述&#xff1a;一次内核语言的“心脏移植”最近Linux内核社区的一个决定&#xff0c;在开发者圈子里激起了不小的波澜&#xff1a;计划将内核的C语言标准从使用了超过十年的C89/C90&#xff0c;逐步迁移到C11。这听起来可能像是一个枯燥的技术规范更新&#xff0c;但对…...

【模拟电路】Circuit JS:从零到一,构建你的首个交互式电路实验

1. 初识Circuit JS&#xff1a;你的虚拟电路实验室 第一次接触Circuit JS时&#xff0c;我正为一个简单的LED电路设计发愁。传统仿真软件要么安装复杂&#xff0c;要么收费昂贵&#xff0c;直到发现这个直接在浏览器里运行的免费工具。打开网页的瞬间&#xff0c;就像走进了中学…...