
项目已开源,开源地址: https://gitcode.com/nutpi/HarmonyosNextCaseStudyTutorial , 欢迎fork & star

在上一篇教程中,我们介绍了详情页的整体布局结构和顶部标题栏的实现。本篇教程将继续深入探讨DetailPage组件的中间内容区域和底部按钮栏的实现,重点讲解Flex布局的使用、文本溢出处理以及按钮样式设计等高级布局技巧。通过这些技巧,我们可以创建一个既美观又实用的详情页面,提升用户体验。
Flex()
{
Column({ space: 12 }) { // 内容垂直排列
Text('文档内容')
.fontSize(16)
.fontWeight(500)
Text(this.content)
.fontSize(14)
.lineHeight(1.8)
.maxLines(10) // 限制行数 折行
.textOverflow({overflow:TextOverflow.Ellipsis })
}.height(400)
} .width('100%')
.padding({ top: 24,bottom: 24, left:16, right:16 })中间内容区域使用Flex组件作为容器,内部嵌套Column组件来垂直排列内容元素。
属性/参数 | 值 | 作用 |
|---|---|---|
width | 100% | 设置Flex宽度占父容器的100% |
padding | { top: 24, bottom: 24, left: 16, right: 16 } | 设置内边距,使内容与边缘保持适当距离 |
在这个案例中,Flex组件主要用于创建一个弹性的内容区域,它可以根据可用空间自动调整大小,非常适合用于详情页的内容展示。
Column({ space: 12 }) { // 内容垂直排列
Text('文档内容')
.fontSize(16)
.fontWeight(500)
Text(this.content)
.fontSize(14)
.lineHeight(1.8)
.maxLines(10) // 限制行数 折行
.textOverflow({overflow:TextOverflow.Ellipsis })
}.height(400)属性/参数 | 值 | 作用 |
|---|---|---|
space | 12 | 设置子组件之间的垂直间距为12vp |
height | 400 | 设置Column高度为400vp |
内部Column组件用于垂直排列内容标题和详情文本,通过space属性设置它们之间的间距,提高可读性。
Text('文档内容')
.fontSize(16)
.fontWeight(500)属性 | 值 | 作用 |
|---|---|---|
构造参数 | ‘文档内容’ | 设置文本内容 |
fontSize | 16 | 设置字体大小为16vp |
fontWeight | 500 | 设置字体粗细为中等偏粗 |
内容标题使用了适中的字号和较粗的字重,使其在视觉上突出但不会过于抢眼,保持与页面标题的层次关系。
Text(this.content)
.fontSize(14)
.lineHeight(1.8)
.maxLines(10) // 限制行数 折行
.textOverflow({overflow:TextOverflow.Ellipsis })属性 | 值 | 作用 |
|---|---|---|
构造参数 | this.content | 使用组件状态变量作为文本内容 |
fontSize | 14 | 设置字体大小为14vp |
lineHeight | 1.8 | 设置行高为字体大小的1.8倍,提高可读性 |
maxLines | 10 | 限制最大显示行数为10行 |
textOverflow | {overflow:TextOverflow.Ellipsis} | 设置文本溢出时显示省略号 |
详情文本的实现考虑了以下几个方面:
这些设置共同创建了一个既美观又实用的文本展示区域,适合详情页的内容展示需求。
在这个案例中,使用Flex和Column的嵌套结构实现内容区域有以下优势:
这种布局方式非常适合详情页、文章页等需要展示大量文本内容的场景。
Row({ space: 24 })
{
Button('返回')
.width(80)
.height(40)
.fontColor(0xFFFFFF)
Button('收藏')
.width(80)
.height(40)
.backgroundColor(0x007DFF)
.fontColor(0xFFFFFF)
} .width('100%')
.height(56)
.backgroundColor(0xFFFFFF)
.shadow({ radius: 4, color: 0x05000000 })
.padding({ left: 24, right: 24, bottom: 24, top: 24})底部按钮栏使用Row组件实现水平布局,将多个操作按钮放置在同一行。
属性/参数 | 值 | 作用 |
|---|---|---|
space | 24 | 设置子组件之间的水平间距为24vp |
width | 100% | 设置Row宽度占父容器的100% |
height | 56 | 设置Row高度为56vp,形成固定高度的按钮栏 |
backgroundColor | 0xFFFFFF | 设置背景色为白色 |
shadow | { radius: 4, color: 0x05000000 } | 设置阴影效果,增强视觉层次感 |
padding | { left: 24, right: 24, bottom: 24, top: 24} | 设置内边距,使按钮与边缘保持适当距离 |
底部按钮栏的设计考虑了以下几个方面:
Button('返回')
.width(80)
.height(40)
.fontColor(0xFFFFFF)
Button('收藏')
.width(80)
.height(40)
.backgroundColor(0x007DFF)
.fontColor(0xFFFFFF)按钮 | 属性 | 值 | 作用 |
|---|---|---|---|
返回按钮 | 构造参数 | ‘返回’ | 设置按钮文本 |
width | 80 | 设置按钮宽度为80vp | |
height | 40 | 设置按钮高度为40vp | |
fontColor | 0xFFFFFF | 设置文字颜色为白色 | |
收藏按钮 | 构造参数 | ‘收藏’ | 设置按钮文本 |
width | 80 | 设置按钮宽度为80vp | |
height | 40 | 设置按钮高度为40vp | |
backgroundColor | 0x007DFF | 设置背景色为蓝色 | |
fontColor | 0xFFFFFF | 设置文字颜色为白色 |
按钮的设计遵循了以下规范:
这些设计规范有助于创建一个既美观又实用的按钮栏,提升用户体验。
.shadow({ radius: 4, color: 0x05000000 })属性 | 值 | 作用 |
|---|---|---|
radius | 4 | 设置阴影半径为4vp,控制阴影的扩散范围 |
color | 0x05000000 | 设置阴影颜色为黑色,透明度为5% |
阴影效果的实现考虑了以下几个方面:
这种微妙的阴影效果是现代UI设计中常用的技巧,可以增强界面的深度感和层次感。
DetailPage组件的布局策略是将界面分为固定区域和弹性区域:
这种布局策略有以下优势:
在DetailPage组件中,我们使用了多层嵌套的布局结构:
这种多层嵌套的布局结构使我们能够:
在DetailPage组件中,我们使用了多种动态尺寸的组件:
这些动态尺寸组件的应用使界面能够:
通过DetailPage组件的实现,我们学习了以下核心技术要点:
在实际开发中,可以参考以下建议: