HarmonyOS4.0 ArkUI常用组件

一、Image

语法:

Image(src:string|PixelMap|Resource)

使用方式:

  • string格式:用来加载网络图片,需要在module.json5中申请网络访问权限:ohos.permission.INTERNET

    • Image("http://xxx.png")
      
  • PixelMap格式:可以加载像素图,常用在图片编辑中

    • 需要传递pixelMapObject对象,比较繁琐

    • Image(pixelMapObject)
      
  • Resource格式:加载本地图片,推荐使用

    • Image($r(“app.media.xxx”))
      • app.media固定写法
      • 指向resources/base/media
      • 可省略图片后缀名
    • Image($rawfile(“xxx.png”))
      • 直接指向resources/rawfile
      • 不能省略图片后缀名

    在这里插入图片描述

二、Text

语法:

Text(string|Resource)

使用方式:

  • string格式,直接填写文本内容

    • Text("文本内容")
      
  • Resource格式,读取本地资源文件

    • test_label是一个变量名,当Text组件中的内容不想固定时,可以把数据添加到base/element/string.json中,或者添加到en_US/element/string.json、zh_CN/element/string.json中,系统首先会根据系统的中英文去找en_US或者zh_CN,如果都不匹配,就去默认的base下查找,一般内容会保存国家、语言、设备号等一些信息。

    • Text($r("app.string.test_label"))
      
    • 注意:en_US和zh_Cn设置完后base下也要设置,但是base下的Value无所谓

    • // zh_CN下
      {
        "name": "test_label",
        "value": "测试内容"
      }
      
      // en_US下
      {
        "name": "test_label",
        "value": "test content"
      }
      
      // base下
      {
        "name": "test_label",
        "value": "label"
      }
      
    • @Entry
      @Component
      struct Page4 {
        @State message: string = 'Hello World'
      
        build() {
          Row() {
            Column() {
              Text($r("app.string.test_label"))
                .fontSize(40)
                .fontWeight(FontWeight.Bold)
                .fontColor("#bfda83")
                .lineHeight(40)
            }
            .width('100%')
          }
          .height('100%')
        }
      }
      

    在这里插入图片描述

三、TextInput

TextInput、TextArea是输入框组件,通常用于响应用户的输入操作,比如评论区的输入、聊天框的输入、表格的输入等,也可以结合其它组件构建功能页面,例如登录注册页面。

1、创建输入框

语法:

TextArea(value?:{placeholder?: ResourceStr, text?: ResourceStr, controller?: TextAreaController})
  • Placeholder:内容提示
  • Text:文本内容
@Entry
@Component
struct TextInputUI {

  build() {
    Row() {
      Column() {
      
        TextInput({placeholder:"请输入用户名"})
          .width(200)

        TextInput({text:"文本内容"})
          .width(200)
          .backgroundColor("#1758f0")
          .type(InputType.Password)

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

在这里插入图片描述

2、事件方法

@Entry
@Component
struct TextInputUI {
  build() {
    Row() {
      Column() {
      
        TextInput({ text: "文本内容" })
          .width(200)
          .backgroundColor("#1758f0")
          .type(InputType.Password)
          .onChange(value => {
            console.log(value)
          })

        /**
            输入框文本内容发生改变就会触发onChange事件
            完整写法:
            onChange((value:string)=>{
              console.log(value)
            })
            如果只有一个参数,那么括号可以省略,并且string类型可以省略
         */

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

3、案例需求

利用文本输入框的内容来控制图片的大小

@Entry
@Component
struct TextInputUI {

  @State num:number = 200

  build() {
    Row() {
      Column() {


        Image($r("app.media.1"))
          .width(this.num)


        TextInput({ text: this.num.toString() })
          .width(200)
          .backgroundColor("#1758f0")
          .type(InputType.Normal)
          .onChange(value => {
          /*
          ArkTS不允许使用全局对象的属性和方法: Infinity, NaN, isFinite, isNaN, parseFloat, parseInt
          可以使用Number的属性和方法: Infinity, NaN, isFinite, isNaN, parseFloat, parseInt
          API9可以直接使用:parseInt
          API10需要这样使用:Number.parseInt
          */
            this.num = Number.parseInt(value)
          })

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

四、TextArea

用法和TextInput一致,为了的区别就是TextArea是一个多行输入框,在输入框中可以换行

语法:

TextArea(value?:{placeholder?: ResourceStr, text?: ResourceStr, controller?: TextAreaController})

五、Button

  • 普通按钮
    • Button("普通按钮")
      
  • 自定义按钮:在Button内嵌套其他组件
    • Button(){
        Image($r("app.media.icon")).width(70).margin(100)
      }.type(ButtonType.Circle) // 按钮类型  圆形等等
      .onClick(()=>{
        console.log("事件函数")
      })
      

六、Slider

Slider:滑动条组件

语法:

Slider(option?:SliderOptions)

属性:

Slider({
    min:0, // 最小值
    max:100,// 最大值
    value:30,// 当前值
    step:10,// 滑动步长
    style:SliderStyle.OutSet,// 滑块在滑条外面,InSet:滑块在滑条里面
    direction:Axis.Horizontal,// 滑条水平方向, Vertical:滑条垂直方向
    reverse:false// 是否反向滑动,最大值和最小值是否换位置
})
@Entry
@Component
struct SliderUI {

  build() {
    Row() {
      Column() {

        Slider({
          min:0,
          max:100,
          value:30,
          style:SliderStyle.OutSet
        })
          .width("90%")
          .showTips(true) // 是否展示value的百分比
          .blockColor("#a9b529") // 滑块的背景色
          .trackThickness(8) // 滑动条粗细
          .onChange(value=>{
            console.log(value.toString())
          })

      }
      .width('100%')
    }
    .height('100%')
  }
}
dth("90%")
          .showTips(true) // 是否展示value的百分比
          .blockColor("#a9b529") // 滑块的背景色
          .trackThickness(8) // 滑动条粗细
          .onChange(value=>{
            console.log(value.toString())
          })

      }
      .width('100%')
    }
    .height('100%')
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘程云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值