「Mac畅玩鸿蒙与硬件11」鸿蒙 UI 组件篇1 - Text和Button组件详解

简介: 本篇将详细介绍鸿蒙应用开发中的 Text 和 Button 组件。通过本篇内容,你将学习如何使用 Text 组件显示文本、格式化文本样式,以及如何使用 Button 组件处理点击事件并自定义样式。掌握这些基本组件的用法将为后续的 UI 开发奠定基础。

本篇将详细介绍鸿蒙应用开发中的 TextButton 组件。通过本篇内容,你将学习如何使用 Text 组件显示文本、格式化文本样式,以及如何使用 Button 组件处理点击事件并自定义样式。掌握这些基本组件的用法将为后续的 UI 开发奠定基础。

20241027_093327.gif

关键词
  • Text 组件
  • Button 组件
  • 样式设置
  • 事件响应
  • 状态管理

一、Text 组件基础

Text 组件用于显示文本,支持字体大小、颜色、对齐等样式设置,方便开发者根据需求展示不同的文本信息。

1.1 基本用法
  • 直接在 Text 组件中插入字符串或变量来显示文本:

    // 创建一个 Text 组件,显示简单的文本内容
    Text('Hello, HarmonyOS!')
    
    AI 代码解读
1.2 设置文本样式
  • 通过链式调用设置字体大小、粗细和颜色等样式:

    // 设置字体大小、粗细和颜色
    Text('Hello, HarmonyOS!')
      .fontSize(24) // 字体大小为 24
      .fontWeight(FontWeight.Bold) // 加粗显示
      .fontColor(Color.Blue) // 文本颜色为蓝色
    
    AI 代码解读
1.3 文本对齐方式
  • 使用 alignSelf 设置 Text 的对齐方式,例如居中对齐:

    // 设置文本在容器中居中对齐
    Text('Welcome to HarmonyOS')
      .alignSelf(ItemAlign.Center)
      .fontSize(20) // 字体大小为 20
    
    AI 代码解读
1.4 多行显示
  • 使用 maxLines 属性限制最大行数,或通过 textOverflow 设置溢出显示方式:

    // 设置最多显示 2 行,溢出时显示省略号
    Text('这是一个非常长的文本,超过一定行数会显示省略号。')
      .maxLines(2) // 最多显示 2 行
      .textOverflow({
          overflow: TextOverflow.Ellipsis }) // 超出显示省略号
    
    AI 代码解读

运行效果图
Screenshot_2024-10-27T091652.png


二、Button 组件基础

Button 组件用于创建按钮,通常用于捕获用户点击事件。支持自定义样式、圆角和事件响应。

2.1 基本用法
  • Button 组件中直接设置按钮文本:

    // 创建一个按钮,显示 “点击我” 文本
    Button('点击我')
    
    AI 代码解读
2.2 添加点击事件
  • 使用 onClick 函数监听点击事件,并在按钮点击时触发回调函数:

    // 创建一个按钮,点击时执行 onClick 回调
    Button('点击增加计数')
      .onClick(() => {
          // 添加点击事件处理函数
        this.count += 1; // 每次点击时,count 值加 1
      })
    
    AI 代码解读
2.3 按钮样式设置
  • 通过 fontSizefontColor 等设置按钮文本样式:

    // 设置按钮字体大小、颜色和背景颜色
    Button('提交')
      .fontSize(18) // 字体大小为 18
      .fontColor(Color.White) // 字体颜色为白色
      .backgroundColor(Color.Green) // 背景颜色为绿色
    
    AI 代码解读
2.4 设置按钮圆角和边框
  • 使用 borderRadiusborderColor 实现圆角和边框样式:

    // 设置按钮圆角和边框样式
    Button('圆角按钮')
      .borderRadius(10) // 圆角半径为 10
      .borderColor(Color.Gray) // 边框颜色为灰色
      .backgroundColor(Color.Grey) // 背景颜色为灰色
      .fontColor(Color.Black) // 字体颜色为黑色
    
    AI 代码解读

运行效果图
Screenshot_2024-10-27T100729.png


三、Text 与 Button 组件结合实例

在实际开发中,TextButton 组件经常结合使用。下面是一个简单的计数器实例,点击按钮时,Text 显示的计数值更新。

3.1 完整示例代码
@Entry
@Component
struct CounterApp {
   
  @State count: number = 0; // 定义一个状态变量 count,用 @State 修饰管理状态

  build() {
   
    Column() {
   
      // 显示应用标题
      Text('计数器应用')
        .fontSize(24) // 标题字体大小为 24
        .fontWeight(FontWeight.Bold) // 标题字体加粗
        .margin({
    top: 20 }) // 顶部边距为 20
        .alignSelf(ItemAlign.Center) // 水平居中对齐

      // 显示当前计数值
      Text(this.count.toString())
        .fontSize(50) // 字体大小为 50
        .fontWeight(FontWeight.Bold) // 字体加粗
        .margin({
    top: 20, bottom: 20 }) // 上下边距分别为 20
        .alignSelf(ItemAlign.Center) // 水平居中对齐

      // 增加计数的按钮
      Button('增加')
        .onClick(() => {
    // 添加点击事件处理函数
          this.count += 1; // 每次点击,count 值增加 1
        })
        .fontSize(18) // 字体大小为 18
        .fontColor(Color.White) // 按钮字体颜色为白色
        .backgroundColor(Color.Blue) // 按钮背景颜色为蓝色
        .width(100) // 按钮宽度为 100
        .height(50) // 按钮高度为 50
        .alignSelf(ItemAlign.Center) // 水平居中对齐
        .borderRadius(10) // 圆角半径为 10
    }
    .width('100%') // Column 容器宽度为 100%
    .height('100%') // Column 容器高度为 100%
    .padding(20) // 设置内边距为 20
  }
}
AI 代码解读
3.2 说明
  • 该实例使用 @State 修饰的 count 变量保存计数值。
  • 点击按钮时,触发 onClick 事件使 count 值递增。
  • Text 组件实时更新 count 值,实现简单的计数显示。

四、Text 与 Button 组件进阶技巧

4.1 动态样式
  • 使用条件表达式动态改变组件的样式。例如,当计数值为偶数时按钮背景为蓝色,为奇数时为红色:

    // 动态设置按钮颜色,根据 count 是奇数或偶数显示不同颜色
    Button('增加')
      .onClick(() => {
         
        this.count += 1;
      })
      .backgroundColor(this.count % 2 === 0 ? Color.Blue : Color.Red) // 偶数蓝色,奇数红色
    
    AI 代码解读
4.2 多语言支持
  • 使用资源文件实现 Text 内容的多语言适配。在 string.json 文件中定义键值,然后引用:

    • 默认语言src/main/resources/base/element/string.json
    • 中文(中国)src/main/resources/zh_CN/element/string.json
    // string.json
    {
         
        "name": "app_title",
        "value": "计数器应用"
    }
    
    // 使用
    Text($r('app.string.app_title'))
      .fontSize(24)
      .alignSelf(ItemAlign.Center)
    
    AI 代码解读
4.3 按钮点击反馈
  • 使用 backgroundColor 动态变更按钮颜色,或添加 opacity 设置按下反馈效果:

    // 添加按钮点击反馈效果,使用 opacity 动态调整透明度
    Button('提交')
      .onClick(() => {
         
        // 提交事件
        this.count += 1;
        this.isPressed = !this.isPressed; // 改变 isPressed 状态
      })
      .backgroundColor(Color.Green) // 背景颜色为绿色
      .opacity(this.isPressed ? 0.8 : 1) // 按下时透明度变为 0.8
    
    AI 代码解读

小结

本篇介绍了 TextButton 组件的基础用法及其常见样式、事件响应的实现方法。通过学习这些基础组件的用法,开发者可以熟练创建简单的 UI 元素并结合事件实现交互功能,为鸿蒙应用的 UI 开发打下基础。


下一篇预告

下一篇将深入介绍 Image 组件的使用,展示如何在鸿蒙应用中加载和显示图片。


上一篇: 「Mac畅玩鸿蒙与硬件10」鸿蒙开发环境配置篇10 - 项目实战:计数器应用

下一篇: 「Mac畅玩鸿蒙与硬件12」鸿蒙UI组件篇2 - Image组件的使用


作者:SoraLuna
链接:https://www.nutpi.net/thread?topicId=225
來源:坚果派
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


目录
打赏
0
4
4
0
151
分享
相关文章
【04】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-自定义一个设置输入小部件组件-完成所有设置setting相关的页面-优雅草卓伊凡
【04】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-自定义一个设置输入小部件组件-完成所有设置setting相关的页面-优雅草卓伊凡
135 92
|
3天前
HarmonyOS NEXT - ArkUI: Text组件
Text组件用于展示文本信息并支持子组件Span,可配置多种样式属性。包括设置文本颜色(.fontColor)、尺寸(.fontSize)、字体样式(.fontStyle)、粗细(.fontWeight)、主题(.fontFamily)等。此外,还支持文本对齐(.textAlign)、超长处理(.textOverflow与.maxLines配合)、装饰线(.decoration)等功能。示例代码展示了如何应用这些属性实现丰富的文本效果。
101 72
harmonyOS基础- 快速弄懂HarmonyOS ArkTs基础组件、布局容器(前端视角篇)
本文由黑臂麒麟(6年前端经验)撰写,介绍ArkTS开发中的常用基础组件与布局组件。基础组件包括Text、Image、Button等,支持样式设置如字体颜色、大小和加粗等,并可通过Resource资源引用统一管理样式。布局组件涵盖Column、Row、List、Grid和Tabs等,支持灵活的主轴与交叉轴对齐方式、分割线设置及滚动事件监听。同时,Tabs组件可实现自定义样式与页签切换功能。内容结合代码示例,适合初学者快速上手ArkTS开发。参考华为开发者联盟官网基础课程。
31 17
harmonyOS基础- 快速弄懂HarmonyOS ArkTs基础组件、布局容器(前端视角篇)
【01】优雅草星云物联网AI智控系统从0开发鸿蒙端适配完成流程-初始化鸿蒙编译器deveco studio项目结构-UI设计图切片下载-优雅草卓伊凡
【01】优雅草星云物联网AI智控系统从0开发鸿蒙端适配完成流程-初始化鸿蒙编译器deveco studio项目结构-UI设计图切片下载-优雅草卓伊凡
25 11
【01】优雅草星云物联网AI智控系统从0开发鸿蒙端适配完成流程-初始化鸿蒙编译器deveco studio项目结构-UI设计图切片下载-优雅草卓伊凡
HarmonyOS:ArkTS RowSplit 组件自学指南
在 ArkTS 开发中,复杂界面布局需求常见,尤其需要灵活调整子组件宽度时,传统方式难以满足动态交互需求。`RowSplit` 组件解决了这一问题,支持横向布局并插入可拖动的分割线,让用户轻松调整子组件宽度,提升体验。本文详细介绍了 `RowSplit` 的功能、接口、属性及使用示例,帮助开发者掌握其用法,并总结了注意事项。通过合理配置,可实现灵活美观的布局效果。希望对您有帮助,欢迎关注、点赞和收藏!
44 31
|
5天前
|
鸿蒙开发:信息标记组件
使用信息标记组件Badge,不需要我们在关注位置问题,我们通过position属性进行控制即可,而且针对信息的显示和隐藏,也不用过多的条件判断,可以说是非常的简单。
鸿蒙开发:信息标记组件
|
2天前
|
HarmonyOS:ArkTS Path 组件自学指南
在鸿蒙应用开发中,绘制复杂图形常面临传统布局方式难以满足需求的问题。ArkTS 的 Path 组件提供了解决方案,如同一把“神奇画笔”,支持通过灵活的命令和属性绘制直线、曲线、椭圆弧等多样图形。本文详细介绍了 Path 组件从 API Version 7 起的功能特性,包括 `commands`、`fill`、`stroke` 等核心属性,以及各类绘图命令如 `M`(移动)、`L`(直线)、`C`(贝塞尔曲线)等。结合示例代码,展示了如何绘制简单直线到复杂曲线图形,并拓展了颜色、透明度和线条样式的自定义方法。掌握 Path 组件,可为应用带来更丰富生动的视觉体验,助力开发者实现创意绘图需求。
34 21
|
2天前
|
HarmonyOS NEXT - ArkUI: Button组件
Button是用于响应用户点击操作的按钮组件,支持胶囊型、圆形和普通三种样式。可通过`type`属性设置样式(默认为胶囊型),并使用`stateEffect`控制按压态效果(默认开启)。Button可包含子组件,实现复杂功能按钮;支持自定义文本样式、背景色及边框弧度等样式。示例代码展示了不同类型按钮的创建、子组件嵌套及点击事件处理方法。
51 18
HarmonyOS NEXT - ArkUI: TextInput组件
TextInput组件是用于输入单行文本的核心组件,广泛应用于登录账号、密码输入及消息发送等场景。支持通过`placeholder`设置提示文字、`text`初始化文本内容以及`controller`控制输入行为。提供多种输入类型(如普通、密码、邮箱、数字)通过`.type()`方法设置,并可通过`.onChange()`监听文本变化。 示例代码展示了基本用法,包括账号、密码和手机号的输入框实现。此外,组件支持字符计数功能,通过`.maxLength()`限制最大字符数、`.showCounter()`显示计数器,并可自定义阈值和高亮边框效果,满足复杂输入场景需求。
51 15
|
2天前
HarmonyOS NEXT - ArkUI: Image组件
Image组件用于渲染和展示图片,丰富界面视觉效果。支持png、jpg、bmp、svg、gif和heif等多种格式,数据源包括本地资源、Resource资源、网络资源、媒体库(file://路径)及PixelMap像素图。使用时需根据资源类型配置路径或权限(如网络图片需声明ohos.permission.INTERNET)。此外,Image组件支持矢量图填充颜色设置(fillColor)和多种缩放模式(objectFit),如Contain、Cover等。示例代码展示了本地、资源、网络图片的加载与样式调整方法。
54 14

物联网

+关注
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等