19-鸿蒙开发中的线性布局-交叉轴对齐方式

      大家好,欢迎来到鸿蒙开发系列教程!今天,我们将深入探讨鸿蒙应用中线性布局(LinearLayout)的交叉轴对齐方式,并通过一个综合小案例来展示如何灵活运用这些对齐方式。通过这些设置,你可以使用户界面更加整洁和美观。无论你是初学者还是有一定经验的开发者,理解这些布局属性都是非常有帮助的。让我们开始吧!

1.什么是线性布局及其交叉轴对齐方式?

  1. 线性布局(LinearLayout):线性布局是一种将子组件按水平或垂直方向排列的布局方式。鸿蒙开发框架(ArkUI)提供了 Column 和 Row 两个组件来实现垂直和水平的线性布局。
  2. 交叉轴对齐方式(Cross Axis Alignment):交叉轴对齐方式是指子组件在交叉轴方向上的对齐方式。对于 Column,交叉轴是水平方向;对于 Row,交叉轴是垂直方向。常见的交叉轴对齐方式包括 startcenterendstretch

2.如何在鸿蒙应用中设置交叉轴对齐方式?

鸿蒙开发框架(ArkUI)提供了 alignItems 属性来设置交叉轴对齐方式。

1. start:对齐到交叉轴的起点
import { Row, Text } from '@ohos/arkui';

export default {
    build() {
        return (
            <Row width="100%" height="100%" alignItems="start">
                <Text>Item 1</Text>
                <Text>Item 2</Text>
                <Text>Item 3</Text>
            </Row>
        );
    }
};
2. center:居中对齐
import { Row, Text } from '@ohos/arkui';

export default {
    build() {
        return (
            <Row width="100%" height="100%" alignItems="center">
                <Text>Item 1</Text>
                <Text>Item 2</Text>
                <Text>Item 3</Text>
            </Row>
        );
    }
};
3. end:对齐到交叉轴的终点
import { Row, Text } from '@ohos/arkui';

export default {
    build() {
        return (
            <Row width="100%" height="100%" alignItems="end">
                <Text>Item 1</Text>
                <Text>Item 2</Text>
                <Text>Item 3</Text>
            </Row>
        );
    }
};
4. stretch:拉伸以填充整个交叉轴
import { Row, Text } from '@ohos/arkui';

export default {
    build() {
        return (
            <Row width="100%" height="100%" alignItems="stretch">
                <Text style={{ backgroundColor: 'lightblue' }}>Item 1</Text>
                <Text style={{ backgroundColor: 'lightgreen' }}>Item 2</Text>
                <Text style={{ backgroundColor: 'lightyellow' }}>Item 3</Text>
            </Row>
        );
    }
};

3. 综合小案例:商品列表卡片

为了更好地理解线性布局的交叉轴对齐方式,我们来看一个综合小案例:创建一个商品列表卡片。

假设我们要创建一个商品列表,每个商品卡片包含商品图片、名称和价格。我们将使用 Row 布局来实现商品信息的水平排列,并通过不同的交叉轴对齐方式来调整商品信息的垂直位置。

import { Column, Row, Text, Image, View } from '@ohos/arkui';

export default {
    data: {
        products: [
            { name: '产品A', price: '$19.99', imageUrl: '$media:product-a.jpg' },
            { name: '产品B', price: '$29.99', imageUrl: '$media:product-b.jpg' },
            { name: '产品C', price: '$39.99', imageUrl: '$media:product-c.jpg' }
        ]
    },
    build() {
        return (
            <Column width="100%" height="100%" padding="20px" justifyContent="flex-start">
                {this.data.products.map((product, index) => (
                    <View
                        key={index}
                        style={{
                            width: '100%',
                            padding: '10px',
                            marginBottom: '10px',
                            backgroundColor: 'white',
                            borderRadius: '8px',
                            boxShadow: '0 2px 4px rgba(0, 0, 0, 0.1)',
                            border: '1px solid #ccc'
                        }}
                    >
                        <Row
                            style={{
                                width: '100%',
                                alignItems: 'center' // 交叉轴对齐方式
                            }}
                        >
                            <Image
                                src={product.imageUrl}
                                style={{ width: '50px', height: '50px', marginRight: '10px' }}
                            />
                            <Column style={{ flex: 1 }}>
                                <Text style={{ fontSize: '16px', fontWeight: 'bold' }}>{product.name}</Text>
                                <Text style={{ fontSize: '14px', color: '#666' }}>{product.price}</Text>
                            </Column>
                        </Row>
                    </View>
                ))}
            </Column>
        );
    }
};
详细解释
  1. 布局容器

    • Column:作为最外层的容器,使用 Column 布局容器将所有商品卡片垂直排列。
    • Row:用于水平排列每个商品的信息(图片、名称和价格)。
  2. 商品信息

    • Image:用于显示商品图片。
    • Text:用于显示商品名称和价格。
  3. 样式

    • 内边距:通过 padding 属性增加组件内部的空间。
    • 圆角:通过 borderRadius 属性设置圆角。
    • 阴影:通过 boxShadow 属性增加立体感。
    • 边框:通过 border 属性设置边框。
    • 对齐方式:通过 alignItems 属性设置子组件在交叉轴上的对齐方式。

4.总结

通过本文,你已经学会了如何在鸿蒙开发中设置线性布局的交叉轴对齐方式,并通过一个综合小案例——商品列表卡片,展示了如何灵活运用这些对齐方式。这些布局属性对于创建整洁且美观的用户界面非常重要。希望这篇文章对你有所帮助,如果有任何问题或建议,欢迎在评论区留言交流。期待在鸿蒙开发的道路上与你共同成长!


希望你喜欢这篇文章,如果觉得有用,别忘了点赞和分享哦!再见!


希望这篇文章对你有所帮助,如果有任何问题或建议,欢迎随时留言交流!再见!

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

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

相关文章

如何保护LabVIEW程序免遭反编译

在正常情况下&#xff0c;LabVIEW程序&#xff08;即编译后的可执行文件或运行时文件&#xff0c;如 .exe 或 .llb&#xff09;无法直接被反编译出源码。然而&#xff0c;有一些需要特别注意的点&#xff1a; 1. LabVIEW的编译机制 LabVIEW编译器会将源码&#xff08;.vi文件&a…

求助:selenium.common.exceptions.SessionNotCreatedException: x x x

1.背景 想要使用python代码接管已打开的浏览器&#xff0c;减少重复登录或者selenium用例执行前的又臭又长的流程 2.报错截图 3.场景 目前是已开启浏览器调试模式且终端未关闭&#xff0c;执行上图中的代码后没有自动输入url且报错 4. 分析 我尝试了add_experimental_optio…

40分钟学 Go 语言高并发:【实战课程】工作池(Worker Pool)实现

工作池&#xff08;Worker Pool&#xff09;实战实现 一、知识要点概述 模块核心功能实现难点重要程度池化设计管理协程生命周期并发安全、资源控制⭐⭐⭐⭐⭐动态扩缩容根据负载调整池大小平滑扩缩、性能优化⭐⭐⭐⭐任务分发合理分配任务到worker负载均衡、任务优先级⭐⭐⭐…

Could not locate device support files.

报错信息&#xff1a;Failure Reason: The device may be running a version of iOS (13.6.1 17G80) that is not supported by this version of Xcode.[missing string: 869a8e318f07f3e2f42e11d435502286094f76de] 问题&#xff1a;xcode15升级到xcode16之后&#xff0c;13.…

Ubantu系统docker运行成功拉取失败【成功解决】

解决docker运行成功拉取失败 失败报错 skysky-Legion-Y7000-IRX9:~$ docker run hello-world docker: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Head “http://%2Fvar%2Frun%2Fdocker.sock/_ping”: dial uni…

git rebase-优雅合并与修改提交

文章目录 简介rebase用于合并使用rebase修改提交cherry-pick 简介 在Git核心概念图例与最常用内容操作(reset、diff、restore、stash、reflog、cherry-pick)中我们已经介绍了git的最常用实用的命令。 在上面说的那篇文章中&#xff0c;我们只是简单提了一下rebase。 是因为r…

TongRDS分布式内存数据缓存中间件

命令 优势 支持高达10亿级的数据缓冲&#xff0c;内存优化管理&#xff0c;避免GC性能劣化。 高并发系统设计&#xff0c;可充分利用多CPU资源实现并行处理。 数据采用key-value多索引方式存储&#xff0c;字段类型和长度可配置。 支持多台服务并行运行&#xff0c;服务之间可互…

【大数据学习 | Spark调优篇】Spark之内存调优

1. 内存的花费 1&#xff09;每个Java对象&#xff0c;都有一个对象头&#xff0c;会占用16个字节&#xff0c;主要是包括了一些对象的元信息&#xff0c;比如指向它的类的指针。如果一个对象本身很小&#xff0c;比如就包括了一个int类型的field&#xff0c;那么它的对象头实…

pageoffice最新版本浏览器点击没反应解决办法

一、问题现象 最新版本的谷歌、火狐浏览器&#xff0c;调用pageoffice时&#xff0c;点击后没反应&#xff08;旧的谷歌浏览器不受影响&#xff09;。 二、产生原因 服务器返回pageOffice的客户端唤起链接格式为&#xff1a; PageOffice://|http://192.168.1.120:8080/xxx …

知行合一:实践中的技术分享与学习

随着科技的不断发展&#xff0c;技术的更新迭代也在不断加速。在这个信息化、数字化的时代&#xff0c;技术人员之间的交流与合作显得尤为重要。为了帮助广大技术爱好者、从业者和专家们相互学习、分享经验、解决技术难题&#xff0c;涵盖了数据库、容器化技术、运维、研发、网…

使用经典的Java,还是拥抱新兴的Rust?

在当代互联网时代的企业级开发中&#xff0c;技术栈的选择往往牵动着每个团队的神经。随着Rust语言的崛起&#xff0c;许多开发团队开始重新思考&#xff1a;是继续坚持使用经典的Java&#xff0c;还是拥抱新兴的Rust&#xff1f;这个问题背后&#xff0c;折射出的是对技术演进…

【Qt】图片绘制不清晰的问题

背景 实现一个图片浏览器&#xff0c;可以支持放大/缩小查看图片。主要组件如下&#xff1a; // canvaswidget.h #ifndef CANVASWIDGET_H #define CANVASWIDGET_H#include <QWidget>class CanvasWidget : public QWidget {Q_OBJECT public:explicit CanvasWidget(QImag…

vscode 怎么下载 vsix 文件?

参考&#xff1a;https://marketplace.visualstudio.com/items?itemNameMarsCode.marscode-extension 更好的办法&#xff1a;直接去相关插件的 github repo 下载老版本 https://github.com/VSCodeVim/Vim/releases?page5 或者&#xff0c;去 open-vsx.org 下载老版本 点击这…

学习笔记043——HashMap源码学习1

文章目录 1、HashMap2、Hashtable3、TreeMap4、HashMap 底层结构4.1、什么是红黑树&#xff1f; 1、HashMap HashMap key 是不能重复的&#xff0c;value 可以重复 底层结构 key-value 进行存储&#xff0c;key-value 存入到 Set 中&#xff0c;再将 Set 装载到 HashMap pack…

火语言RPA流程组件介绍--键盘按键

&#x1f6a9;【组件功能】&#xff1a;模拟键盘按键 配置预览 配置说明 按键 点击后,在弹出的软键盘上选择需要的按键 执行后等待时间(ms) 默认值300,执行该组件后等待300毫秒后执行下一个组件. 输入输出 输入类型 万能对象类型(System.Object)输出类型 万能对象类型…

电子应用设计方案-30:智能扫地机器人系统方案设计

智能扫地机器人系统方案设计 一、引言 随着人们生活节奏的加快和对生活品质的追求&#xff0c;智能家居产品越来越受到消费者的青睐。智能扫地机器人作为一种能够自动清扫地面的智能设备&#xff0c;为人们节省了大量的时间和精力。本方案旨在设计一款功能强大、智能化程度高、…

从简单的自动化脚本到复杂的智能助手:Agent技术的实践与应用

现代软件开发中&#xff0c;Agent技术正在悄然改变着我们构建应用程序的方式。一个Agent就像是一个能独立完成特定任务的智能助手&#xff0c;它可以感知环境、作出决策并采取行动。让我们通过实际案例&#xff0c;深入了解如何运用Agent技术来构建智能系统。 想象你正在开发一…

Ubuntu Server 22.04.5 从零到一:详尽安装部署指南

文章目录 Ubuntu Server 22.04.5 从零到一&#xff1a;详尽安装部署指南一、部署环境二、安装系统2.1 安装2.1.1 选择安装方式2.1.2 选择语言2.1.3 选择不更新2.1.4 选择键盘标准2.1.5 选择安装版本2.1.6 设置网卡2.1.7 配置代理2.1.8 设置镜像源2.1.9 选择装系统的硬盘2.1.10 …

定时/延时任务-ScheduledThreadPoolExecutor的使用

文章目录 1. 概要2. 固定速率和固定延时2.1 固定速率2.2 固定延时 3. API 解释3.1 schedule3.2 固定延时 - scheduleWithFixedDelay3.2 固定速率 - scheduleWithFixedDelay 4. 小结 1. 概要 前三篇文章的地址&#xff1a; 定时/延时任务-自己实现一个简单的定时器定时/延时任…

Linux操作系统学习---初识环境变量

目录 ​编辑 环境变量的概念&#xff1a; 小插曲&#xff1a;main函数的第一、二个参数 获取环境变量信息&#xff1a; 1.main函数的第三个参数 2.查看单个环境变量 3.c语言库函数getenv() 和环境变量相关的操作指令&#xff1a; 1.export---导出环境变量&#xff1a; 2.unse…