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

news2024/12/22 13:21:10

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%')

  }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无线网络信号 6G、5G和2.4G 的一些小科普

无线网络信号划分为6G、5G和2.4G这几类信号&#xff0c;它们各自有不同的用途和区别&#xff1a; 1、 2.4G无线技术 - 用途&#xff1a;2.4G无线技术广泛应用于智能家居、物联网、WLAN和蓝牙设备等。它是一个全球性的工作频段&#xff0c;适用于低速率的应用&#xff0c;如普通…

什么是GCP kunernetes的Node Taints and Tolerations

在Kubernetes中&#xff0c;Node taints和Pod tolerations是两个相关的功能&#xff0c;它们用于控制Pods的调度&#xff0c;以确保Pods不会调度到不适当的节点上。以下是这两个概念的详细解释&#xff1a; Node Taints&#xff08;节点污点&#xff09; 定义&#xff1a;Node…

ROS进阶:使用URDF和Xacro构建差速轮式机器人模型

前言 本篇文章介绍的是ROS高效进阶内容&#xff0c;使用URDF 语言&#xff08;xml格式&#xff09;做一个差速轮式机器人模型&#xff0c;并使用URDF的增强版xacro&#xff0c;对机器人模型文件进行二次优化。 差速轮式机器人&#xff1a;两轮差速底盘由两个动力轮位于底盘左…

【Playwright + Python】系列(十)利用 Playwright 完美处理 Dialogs 对话框

哈喽&#xff0c;大家好&#xff0c;我是六哥&#xff01;今天我来给大家分享一下如何使用playwight处理Dialogs对话框&#xff0c;面向对象为功能测试及零基础小白&#xff0c;这里我尽量用大白话的方式举例讲解&#xff0c;力求所有人都能看懂&#xff0c;建议大家先收藏&…

控制器ThinkPHP6

五、控制器中对数组值的返回 在做接口服务时&#xff0c;很多时候回使用数组作为返回值&#xff0c;那么数组如何返回成 json呢&#xff1f; 在 tp6 中返回json 很简单&#xff0c;直接使用 json 进行返回即可&#xff0c;例如&#xff1a; public function index(){$resarra…

基于Java Springboot城市交通管理系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数…

Ubuntu24.04挂载磁盘

一、引言 由于几块磁盘每次开机时的编号都不一样&#xff0c;造成了很多麻烦&#xff0c;所有重新挂载磁盘试一试。 参考链接&#xff1a; ubuntu挂载磁盘或U盘Ubuntu添加新硬盘&#xff0c;挂载到根目录下的某个文件中 二、挂载磁盘 1. 查看盘名 sudo fdisk -l sda 代表第…

springboot003基于springboot的图书个性化推荐系统(源码+包运行+LW+技术指导)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

【React】状态管理之Zustand

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 状态管理之Zustand引言1. Zustand 的核心特点1.1 简单直观的 API1.2 无需 Provi…

【从零开始的LeetCode-算法】3210. 找出加密后的字符串

给你一个字符串 s 和一个整数 k。请你使用以下算法加密字符串&#xff1a; 对于字符串 s 中的每个字符 c&#xff0c;用字符串中 c 后面的第 k 个字符替换 c&#xff08;以循环方式&#xff09;。 返回加密后的字符串。 示例 1&#xff1a; 输入&#xff1a; s "dart&…

Vue的局部使用

文章目录 什么是Vue?局部使用Vue快速入门 常用指令v-forv-bindv-if & v-showv-onv-model Vue生命周期 Axios案例 什么是Vue? Vue是一款构建用户界面的渐进式的JavaScript框架. 局部使用Vue 快速入门常用指令声明周期 快速入门 准备: 准备html页面,并引入Vue模块(…

二分查找法(leetcode 704)

在一个数组里找一个target&#xff0c;判断这个target在不在这个数组里&#xff0c;如果在&#xff0c;返回这个数组所对应的这个元素所对应的下标&#xff0c;否则返回-1. 易错点&#xff1a; &#xff08;1&#xff09;while(left<right) vs while(left<…

Mysql-DQL条件查询

文章目录 条件查询比较运算符逻辑运算符范围like 关键字排序单列顺序组合排序 聚合函数分组基本的分组流程参数的区别 limit 语句limit 语法格式limit 的使用场景 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Mysql专栏&#xff1a;点击&#xff01; ⏰…

Linux(光速安装+centos镜像 图片+大白话)

阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 软件需要 Vmware 下载镜像 下载前需要知道DVD就是标准版 everything就是全家桶 centos8 centos7 规划 假如有一个200G的硬盘 环境配置分区1/100G分区2/boot1G分区3/data50G分区4swap2G&#xff08;内存2 这里忘2了&…

仓库管理系统设计与实现(Java+Mysql)

目 录 摘 要 目 录 第1章 绪论 1.1 研究背景 1.2目的和意义 1.3 论文研究内容 第2章 程序开发技术 2.1 MySQL数据库 2.2 Java语言 第3章 系统分析 3.1可行性分析 3.1.1技术可行性分析 3.1.2经济可行性分析 3.1.3操作可行性分析 3.2系统运行环境 3.3系统流程分…

CentOS 8 安装 chronyd 服务

操作场景 目前原生 CentOS 8 不支持安装 ntp 服务&#xff0c;因此会发生时间不准的问题&#xff0c;需使用 chronyd 来调整时间服务。CentOS 8以及 TencentOS 3.1及以上版本的实例都使用 chronyd 服务实现时钟同步。本文介绍了如何在 CentOS 8 操作系统的腾讯云服务器上安装并…

datawhale11月组队学习 模型压缩技术3:2:4结构稀疏化BERT模型

文章目录 一、 半结构化稀疏性简介二、 代码实践2.1 定义辅助函数2.2 加载模型、tokenizer和数据集2.3 测试baseline模型指标2.4 对BERT-base模型进行半结构稀疏化 《datawhale2411组队学习之模型压缩技术1&#xff1a;模型剪枝&#xff08;上&#xff09;》&#xff1a;介绍模…

大数据学习15之Scala集合与泛型

1. 概述 大部分编程语言都提供了数据结构对应的编程库&#xff0c;并称之为集合库(Collection Library)&#xff0c;Scala 也不例外&#xff0c;且它还拥有以下优点&#xff1a; 易用&#xff1a;灵活组合运用集合库提供的方法&#xff0c;可以解决大部分集合问题 简洁&#xf…

force stop和pm clear的区别

前言&#xff1a;因为工作中遇到force stop和pm clear进程后&#xff0c;进程不能再次挂起&#xff0c;谷歌系统共性问题&#xff0c;服务类应用经清缓存后当下服务就会挂掉&#xff0c;需要系统重启才能恢复。为了更好的“丢锅”&#xff0c;需要进一步学习force stop和pm cle…

SAP+Internet主题HTML样式选择

SAP目前只支持三种HTML样式选择&#xff1a; 样式一 背景色&#xff1a;深色&#xff0c;蓝 特点&#xff1a;适中型排列&#xff0c;与SAP界面排列相同&#xff0c;富含UI特征&#xff0c;整齐美观 URL地址&#xff1a;http://cn1000-sap-01.sc.com:8000/sap/bc/gui/sap/it…