HarmonyOS 容器组件(Column Row Flex)

今天 我们来说容器组件中的 Column Row Flex

Column 我们应该比较熟了 之前用了很多了
是一个列容器

老规矩 先来一个组件骨架

@Entry
@Component
struct Index {

  build() {
    Column({space: 30}) {

    }
    .width('100%')
    .height('100%')
  }
}

我们在中的 Column 元素中加入代码

Column() {
	Column()
	   .width(150)
	   .height(50)
	   .backgroundColor(Color.Blue)
	 Column()
	   .width(150)
	   .height(50)
	   .backgroundColor(Color.Yellow)
}
.border({width: 1,color: Color.Red})
.width('80%')
.height(300)
.margin({top: 30})

这里 我们写了个Column列元素 然后 样式为红色边框 高度 300pv 宽度百分之八十 给了一点上边距
然后 里面放了两个带有高宽和颜色样式的 Column元素
运行结果如下
在这里插入图片描述
由此得出结论 Column 内的子元素 会成列排序
目前 我们可以看到 它的排列方式为 从上至下 左右居中
那么 我们可以看一下它其他的排列方式

我们还是鼠标停在组件上 出现提示后 点击进入API
在这里插入图片描述
有一个参数 space 数字或者字符串类型 控制自己的子元素之间间隔的距离 这个我们用烂了都
在这里插入图片描述
属性介绍是重点 alignItems 控制自己子组件水平方向 简单说就是 从左到右方向对齐方式 类型是
HorizontalAlign
这个对象的 默认是Center 居中
justifyContent 控制自己的子元素 垂直方向 简单说 从上往下方向对齐方式
FlexAlign
对象类型 默认值是Start 从上往下在这里插入图片描述
我们打出 alignItems(HorizontalAlign.); 就会出现主要的三个提示
在这里插入图片描述
我们先用 Start 就变成从左至右了
在这里插入图片描述
Center 就是我们默认的居中效果
在这里插入图片描述
最后 End 右对齐
在这里插入图片描述
然后当我们在下面属性打出 .justifyContent(FlexAlign.)
在这里插入图片描述
默认就是 Start
从上到下
在这里插入图片描述
Center 垂直方向居中
在这里插入图片描述
End 底部对齐
在这里插入图片描述
SpaceBetween 这个比较有趣
两端对齐
在这里插入图片描述
SpaceAround 依旧是两端对齐的一个主效果 但是 不贴边了
在这里插入图片描述
SpaceEvenly 内部所有子元素的讲个相同 简单说 距离平均分配
然后第一个元素 与 顶部 和 最后一个元素与底部的距离 为所有元素边距的一半
在这里插入图片描述
然后 我们来说 Row
我们将 Column 中的代码改成

Row() {
	Column()
	   .width(100)
	   .height(50)
	   .backgroundColor(Color.Blue)
	 Column()
	   .width(100)
	   .height(50)
	   .backgroundColor(Color.Yellow)
}
.border({width: 1,color: Color.Red})
.width('80%')
.height(300)
.margin({top: 30})

Row 是以行沾水子组件布局的
在这里插入图片描述
来看他的属性 鼠标贴上去 打开API
在这里插入图片描述
参数还是这个 space 字符串或者数字 设置子元素 间距
在这里插入图片描述
属性 上 依旧是 alignItems 和 justifyContent
但是反过来了
alignItems VerticalAlign对象类型 控制子元素 垂直方向对齐 默认 Center 居中
justifyContent FlexAlign类型 控制子元素 水平方向对齐方式 默认 Start 左对齐
在这里插入图片描述
先在 Row 组件属性上 .alignItems(VerticalAlign.)
它就会2提示出三个属性
Center 是默认的 就不看了
在这里插入图片描述
Top 垂直方向上对齐
在这里插入图片描述
Bottom 顶部对齐
在这里插入图片描述
然后 我们在 Row组件下属性输入 justifyContent(FlexAlign.)
也是有六个配置项
在这里插入图片描述
Center 水平方向居中
在这里插入图片描述
End 右对齐
在这里插入图片描述
SpaceBetween SpaceAround SpaceEvenly 和 上面Column效果都是一样的 只是一个是垂直 一个是水平方向

那么 最后 我们来看 Flex
我们将 Column 下面的代码改成

Flex() {
	Column()
	   .width(100)
	   .height(50)
	   .backgroundColor(Color.Blue)
	 Column()
	   .width(100)
	   .height(50)
	   .backgroundColor(Color.Yellow)
}
.border({width: 1,color: Color.Red})
.width('80%')
.height(300)
.margin({top: 30})

运行如下
在这里插入图片描述
这里 先给大家看个比较好玩的东西 首先 大家看到这个行显示 会觉得 这个Row不是实现了吗?
但是 如果元素超出了Row的宽度 他就超出去了
但是 flex可以这样
在这里插入图片描述
装不下就往里呀

好啦 我们鼠标移入flex组件 查看API
在这里插入图片描述
首先 它告诉我们 flex 会进行二次布局 会消耗性能 如果对性能要求非常高 建议使用 Column以及Row代替
在这里插入图片描述
flex是可以通过属性设置主轴的 Row的主轴是水平方向 Column的主轴是垂直方向
而 如果你不设置主轴 比如宽高 Column以及Row 会按子元素伸开 简单说 子元素加起来多大 他们主轴就多大 而 flex 会默认把父元素这条线的可用空间占满
在这里插入图片描述
那么 参数
direction 控制子组件在容器中 排列的方向 FlexDirection对象类型 不必填 它也控制主轴的方向 简单说 他控制自己的字内容 是行排序 还是列排序 然后 切换时主轴也会切换
wrap FlexWrap对象类型 控制是否可以换行 默认是NoWrap 超出不允许换行
justifyContent和alignItems 这和我们之前讲的一个意思 主要看direction主轴设置的啥 如果是行 那就和Row的一样 列自然就和Column的一样 根据主轴来的
alignContent 因为 Column和Row 超出也是不允许换行换列的 但是 flex因为wrap的存在 超出可以换 那么 这个就是用来控制多行多列的一个对齐方式的
在这里插入图片描述
好多说不益 我们上代码演示

我们先输入

Flex({
  direction: FlexDirection.
}) {

他就会弹出提示
在这里插入图片描述
它有四个配置项
Row 默认的一个效果 行展示 主轴水平方向 从左至右
在这里插入图片描述
RowReverse 也是行展示 主轴水平方向 但是 是从右至左
在这里插入图片描述
Column 从上至下 主轴垂直方向
在这里插入图片描述
ColumnReverse 也是列展示 主轴垂直方向 从下至上
在这里插入图片描述
justifyContent和alignItems 大家可以自己去看 还是那句话 和我们之前讲的一个意思 主要看direction主轴设置的啥 如果是行 那就和Row的一样 列自然就和Column的一样 根据主轴来的
不过其中 除了 居中 居某个边 两端 其他还是有所变化 大家可以打出 某某类. 他就会弹出提示 我们可以一个一个去看效果

这里 我们这样写

Flex({
	direction: FlexDirection.ColumnReverse,
	alignItems: ItemAlign.Center,
	justifyContent: FlexAlign.Center
}) {

两轴同时居中
在这里插入图片描述
这个大家可以根据提示 都去试一下 各个对齐方式 和不同主轴的情况下

wrap 我们可以将代码写成这样

Flex({
wrap: FlexWrap.NoWrap
}) {
	Column()
	 .width(100)
	 .height(50)
	 .backgroundColor(Color.Blue)
	Column()
	 .width(100)
	 .height(50)
	 .backgroundColor(Color.Yellow)
	Column()
	 .width(100)
	 .height(50)
	 .backgroundColor(Color.Blue)
	Column()
	 .width(100)
	 .height(50)
	 .backgroundColor(Color.Yellow)
	Column()
	 .width(100)
	 .height(50)
	 .backgroundColor(Color.Blue)
	Column()
	 .width(100)
	 .height(50)
	 .backgroundColor(Color.Yellow)
}
.border({width: 1,color: Color.Red})
.width('80%')
.height(300)
.margin({top: 30})

FlexWrap.NoWrap是默认值 超出 就直接拉伸 往里压
在这里插入图片描述
Wrap 允许超出换行
在这里插入图片描述
但是这里 我们多个元素贴在一起 看着好奇怪 改成这样

@Entry
@Component
struct Index {

  build() {
    Column({space: 30}) {
      Flex({
        wrap: FlexWrap.Wrap
      }) {
        Column()
          .width(100)
          .height(50)
          .backgroundColor(Color.Blue)
        Column()
          .width(100)
          .height(50)
          .backgroundColor(Color.Yellow)
        Column()
          .width(100)
          .height(50)
          .backgroundColor(Color.Gray)
        Column()
          .width(100)
          .height(50)
          .backgroundColor(Color.Pink)
        Column()
          .width(100)
          .height(50)
          .backgroundColor(Color.Green)
        Column()
          .width(100)
          .height(50)
          .backgroundColor(Color.Brown)
      }
      .border({width: 1,color: Color.Red})
      .width('80%')
      .height(300)
      .margin({top: 30})

    }
    .width('100%')
    .height('100%')
  }
}

把后面四个 Column的backgroundColor背景色换一下
这样看着就明显多了 放不下直接换行 不硬挤了
在这里插入图片描述
WrapReverse 也是允许换行 但整体会反过来
在这里插入图片描述
alignContent 针对放不下 进行换行 换列 的多行多列对齐方式设置 设置辅轴的对齐方式

alignContent: FlexAlign.

即可带出提示
在这里插入图片描述
这个对齐方向是根据主轴方向来的

Start 也是默认效果 跟着辅轴方向走
在这里插入图片描述
Center 辅轴方向居中
在这里插入图片描述
例如 这里我们改陈 direction: FlexDirection.Column垂直方向主轴
效果就是这样
在这里插入图片描述
因为水平方向才是辅轴 主轴跟着 主对齐方式设置走

End 辅轴反过来
在这里插入图片描述
SpaceBetween 辅轴两端对齐
在这里插入图片描述
SpaceAround 两端 边侧保持距离
在这里插入图片描述
SpaceEvenly 平均分配子元素距离

第一个与最后一个元素 同 底部/顶部距离 为他们边距的一半
在这里插入图片描述
好啦 flex大家还是要动手写一下 比较强大的一个布局工具

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

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

相关文章

python统计分析——箱线图(df.boxplot)

资料来源:用python学统计学,帮助文档 使用pd.dataframe.boxplot()函数绘制箱线图 import numpy as np import pandas as pd from matplotlib import pyplot as pltdfpd.DataFrame({type:[A,A,A,A,A,A,A,A,A,A,B,B,B,B,B,B,B,B,B,B],value:[2,3,3,4,4,4…

JDBC多表联查

JDBC多表联查 在单一表进行查询时&#xff0c;只需要对表中的单个字段进行解析即可&#xff1b;例如下面代码&#xff1a; Overridepublic List<ClassBean> selectAllDao() {List list new ArrayList();try {String sql "select * from class";rs select(s…

buuctf[极客大挑战 2019]BabySQL--联合注入、双写过滤

目录 1、测试万能密码&#xff1a; 2、判断字段个数 3、尝试联合注入 4、尝试双写过滤 5、继续尝试列数 6、查询数据库和版本信息 7、查询表名 8、没有找到和ctf相关的内容&#xff0c;查找其他的数据库 9、查看ctf数据库中的表 10、查询Flag表中的字段名 11、查询表…

移远通信推出两款Wi-Fi 7模组新品,赋能无线连接巅峰体验

​1月9日&#xff0c;在2024年国际消费电子产品展览会 (CES) 期间&#xff0c;全球领先的物联网整体解决方案供应商移远通信宣布&#xff0c;正式推出支持Wi-Fi 7技术的通信模组FGE576Q和FGE573Q &#xff0c;这两款模组将以前沿的Wi-Fi性能突破无线连接边界&#xff0c;为下一…

RabbitMQ(六)消息的持久化

目录 一、简介1.1 定义1.2 消息丢失的场景 二、交换机的持久化方式一&#xff1a;直接 new方式二&#xff1a;channel.exchangeDeclare()方式三&#xff1a;ExchangeBuilder【推荐】 三、队列的持久化方式一&#xff1a;直接 new方式二&#xff1a;channel.queueDeclare()方式三…

牛客网-JAVA(错题集)-1

1 Java的抽象类和接口不可以进行实例化 2 知识点&#xff1a; 1、不论如何 finally里面的代码是一定会执行的 2、finally里面的代码块比return早执行 3、多个return是按顺序执行的&#xff0c;只执行一次 public abstract class Test {public static void main(String[] ar…

深度解析-Java语言的未来

深度解析-Java语言的未来&#xff0c;文末有我耗时一个月&#xff0c;问遍了身边的大佬&#xff0c;零基础自学Java的路线&#xff0c;适用程序员入门&进阶&#xff0c;Java学习路线&#xff0c;2024新版最新版。 文章目录 Q1 - 能否自我介绍下&#xff1f; Q2 - Java语…

diffusers scheduler add_noise前向加噪可视化

参考: http://www.bryh.cn/a/604194.html 1、diffusers Pipeline使用 import torch from diffusers import PixArtAlphaPipelinepipe = PixArtAlphaPipeline.from_pretrained("PixArt-alpha/PixArt-XL-2-1024-MS", torch_dtype=torch.float16) pipe = pipe.to(cud…

嵌入式-Stm32-江科大基于寄存器点亮LED灯

文章目录 前言&#xff1a;一&#xff1a;搭建基于寄存器控制LED的工程二&#xff1a;用江科大的STM32板子实现基于寄存器点亮LED灯三&#xff1a;用非江科大stm32板子实现基于寄存器点亮LED灯道友&#xff1a;一星陨落&#xff0c;黯淡不了星空灿烂&#xff1b;一花凋零&#…

认识Linux指令之 “find grep” 命令

01.find指令&#xff1a; -name Linux下find命令在目录结构中搜索文件&#xff0c;并执行指定的操作。 Linux下find命令提供了相当多的查找条件&#xff0c;功能很强大。由于find具有强大的功能&#xff0c;所以它的选项也很多&#xff0c;其中大部分选项都值得我们花时间来…

Set和Map

一、Set的介绍 1.1、Set相关文档介绍 cplusplus.com/reference/set/set/?kwset 1. set是按照一定次序存储元素的容器 2. 在set中&#xff0c;元素的value也标识它(value就是key&#xff0c;类型为T)&#xff0c;并且每个value必须是唯一的。 set中的元素不能在容器中修改…

iOS14 Widget 小组件调研

桌面小组件是iOS14推出的一种新的桌面内容展现形式。 根据苹果的统计数据&#xff0c;“一般用户每天进入主屏幕的次数超过90次”&#xff0c;如果有一个我们应用的小组件在桌面&#xff0c;每天都有超过90次曝光在用户眼前的机会&#xff0c;这绝对是一个顶级的流量入口。 “…

世邦通信 SPON IP网络对讲广播系统uploadjson.php任意文件上传漏洞

产品介绍 世邦通信SPON IP网络对讲广播系统采用领先的IPAudio™技术,将音频信号以数据包形式在局域网和广域网上进行传送,是一套纯数字传输系统。 漏洞描述 spon IP网络对讲广播系统uploadjson.php存在任意文件上传漏洞&#xff0c;攻击者可以通过构造特殊请求包上传恶意后门…

【NLP】多标签分类【上】

简介 《【NLP】多标签分类》主要介绍利用三种机器学习方法和一种序列生成方法来解决多标签分类问题&#xff08;包含实验与对应代码&#xff09;。共分为上下两篇&#xff0c;上篇聚焦三种机器学习方法&#xff0c;分别是&#xff1a;Binary Relevance (BR)、Classifier Chain…

python 爬虫 request get或post传参

爬虫传参 import requestsurl http://www.xxx# get 或 post 传参数据 data {"pageNo": 1652,"pageSize": 10, }headers {Cookie: ,Host: ,Origin: ,Referer: ,User-Agent: , }# get 请求 # res requests.get( # url, # paramsdata, # hea…

PINN物理信息网络 | 泊松方程的物理信息神经网络PINN解法

基本介绍 泊松方程是一种常见的偏微分方程&#xff0c;它在物理学和工程学中具有广泛的应用。它描述了在某个区域内的标量场的分布与该场在该区域边界上的值之间的关系。 物理信息神经网络&#xff08;PINN&#xff09;是一种结合了物理定律和神经网络的方法&#xff0c;用于…

机器学习---流形学习

1. 流形学习 作为机器学习研究的热点问题之一&#xff0c;流形学习是要从高维数据集中发现内在的低维流形&#xff0c;并基于低 维流形来实现随后的各种机器学习任务&#xff0c;如模式识别&#xff0c;聚类分析。与欧氏空间不同&#xff0c;流形学习主要 处理的是非欧空间里…

spark基础--学习笔记

1 spark 介绍 1.1 spark概念 Apache Spark是专为大规模数据处理而设计的快速通用的分布式计算引擎&#xff0c;是开源的类Hadoop MapReduce的通用分布式计算框架。和MapReduce一样&#xff0c;都是完成大规模数据的计算处理。 简而言之&#xff0c;Spark 借鉴了 MapReduce思…

Mysql是怎么运行的(上)

文章目录 Mysql是怎么运行的Mysql处理一条语句的流程连接管理解析与优化存储引擎 基本配置配置文件系统变量状态变量字符集四种重要的字符集MySQL中的utf8和utf8mb4各级别的字符集和比较规则MySQL中字符集的转换排序规则产生的不同的排序结果 InnoDB存储引擎介绍COMPACT行格式介…

06.构建大型语言模型步骤

在本章中,我们为理解LLMs奠定了基础。在本书的其余部分,我们将从头开始编写一个代码。我们将以 GPT 背后的基本思想为蓝图,分三个阶段解决这个问题,如图 1.9 所示。 图 1.9 本书中介绍的构建LLMs阶段包括实现LLM架构和数据准备过程、预训练以创建基础模型,以及微调基础模…