鸿蒙5.0开发进阶:UI框架-ArkTS组件(Chip)

往期鸿蒙5.0全套实战文章必看:(文中附带全栈鸿蒙5.0学习资料)


Chip

操作块,用于搜索框历史记录或者邮件发送列表等场景。

说明

该组件从API Version 11开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

子组件

Chip

Chip({options:ChipOptions})

装饰器类型:@Builder

元服务API: 从API version 12开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数

名称类型必填装饰器类型说明
optionsChipOptions@Builder定义chip组件的参数。

ChipOptions

ChipOptions定义chip的样式及具体式样参数。

元服务API: 从API version 12开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

名称类型必填说明
sizeChipSize | SizeOptions

操作块尺寸。

默认值:ChipSize:ChipSize.NORMAL,

SizeOptions类型参数不支持百分比设置。

enabledboolean

操作块是否可选中。

默认值:true

activated12+boolean

操作块是否为激活态。

默认值:false

prefixIconPrefixIconOptions前缀图标属性。
prefixSymbol12+ChipSymbolGlyphOptions前缀图标属性,symbol类型。
labelLabelOptions文本属性。
suffixIconSuffixIconOptions后缀图标属性。
suffixSymbol12+ChipSymbolGlyphOptions后缀图标属性,symbol类型。
backgroundColorResourceColor

操作块背景颜色。

默认值:$r('sys.color.ohos_id_color_button_normal')

activatedBackgroundColor12+ResourceColor

操作块激活时的背景颜色。

默认值:$r('sys.color.ohos_id_color_emphasize')。

borderRadiusDimension

操作块背景圆角半径大小,不支持百分比。

默认值:$r('sys.float.ohos_id_corner_radius_button')

allowCloseboolean

删除图标是否显示。

默认值:true

onClose()=>void默认删除图标点击事件。
onClicked12+()=>void操作块点击事件。
direction12+Direction

布局方向。

默认值:Direction.Auto

说明

1.suffixSymbol有传入参数时,suffixIcon和allowClose不生效;suffixSymbol没有传入参数、suffixIcon有传入参数时,allowClose不生效;suffixSymbol和suffixIcon都没有传入参数时,allowClose决定是否显示删除图标。

2.backgroundColor和activatedBackgroundColor赋值undefined时,显示默认背景颜色,赋值非法值时,背景色透明。

3.prefixSymbol/suffixSymbol的fontColor默认值,normalFontColor: [$r('sys.color.ohos_id_color_primary')]、activatedFontColor: [$r('sys.color.ohos_id_color_text_primary_contrary')]。fontColor默认值为16。

4.prefixIcon的fillColor默认值:$r('sys.color.ohos_id_color_secondary'),suffixIcon的fillColor默认值:$r('sys.color.ohos_id_color_primary')。fillColor对颜色的解析与Image组件保持一致。

5.prefixIcon的activatedFillColor默认值:$r('sys.color.ohos_id_color_text_primary_contrary'),suffixIcon的activatedFillColor默认值:$r('sys.color.ohos_id_color_text_primary_contrary')。activatedFillColor对颜色的解析与Image组件保持一致。

ChipSize

ChipSize是chip可指定的尺寸类型,如普通型Chip。

元服务API: 从API version 12开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

名称描述
NORMAL"NORMAL"normal尺寸操作块。
SMALL"SMALL"small尺寸操作块。

IconCommonOptions

IconCommonOptions定义图标的共通属性。

元服务API: 从API version 12开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

名称类型必填说明
srcResourceStr图标图片或图片地址引用。
sizeSizeOptions

图标大小,不支持百分比。

默认值:{width: 16,height: 16}

fillColorResourceColor图标填充颜色。
activatedFillColor12+ResourceColor操作块激活时图标填充颜色。

说明

仅在图片格式为svg时,fillColor和activatedFillColor生效。

PrefixIconOptions

PrefixIconOptions定义前缀图标的属性。

继承于IconCommonOptions

元服务API: 从API version 12开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

SuffixIconOptions

SuffixIconOptions定义后缀图标的属性。

继承于IconCommonOptions

元服务API: 从API version 12开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

名称类型必填说明
action() => void后缀图标设定事件。

ChipSymbolGlyphOptions12+

ChipSymbolGlyphOptions定义前缀图标和后缀图标的属性。

元服务API: 从API version 12开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

名称类型必填说明
normalSymbolGlyphModifier图标设定事件。
activatedSymbolGlyphModifier激活时图标设定事件。

说明

不支持通过symbolEffect修改动效类型和effectStrategy设置动效。

LabelOptions

LabelOptions定义文本的属性。

元服务API: 从API version 12开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

名称类型必填说明
textstring文本文字内容。
fontSizeDimension

文字字号,不支持百分比。

默认值:$r('sys.float.ohos_id_text_size_button2')

fontColorResourceColor

文字颜色。

默认值:$r('sys.color.ohos_id_color_text_primary')

activatedFontColor12+ResourceColor

操作块激活时的文字颜色。

默认值:$r('sys.color.ohos_id_color_text_primary_contrary')

fontFamilystring

文字字体。

默认值:"HarmonyOS Sans"

labelMarginLabelMarginOptions文本与左右侧图标之间间距。
localizedLabelMargin12+LocalizedLabelMarginOptions

本地化文本与左右侧图标之间间距。

默认值:{

start: LengthMetrics.vp(6), end: LengthMetrics.vp(6)

}

LabelMarginOptions

LabelMarginOptions定义文本与左右侧图标之间间距。

元服务API: 从API version 12开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

名称类型必填说明
leftDimension文本与左侧图标之间间距,不支持百分比。
rightDimension文本与右侧图标之间间距,不支持百分比。

LocalizedLabelMarginOptions12+

LocalizedLabelMarginOptions定义本地化文本与左右侧图标之间间距。

元服务API: 从API version 12开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

名称类型必填说明
startLengthMetrics文本与左侧图标之间间距,不支持百分比。
endLengthMetrics文本与右侧图标之间间距,不支持百分比。

示例

示例1(自定义后缀图标)

该示例通过配置suffixIcon实现自定义操作块的后缀图标。

import { Chip, ChipSize } from '@kit.ArkUI';

@Entry
@Component
struct Index {
  build() {
    Column({ space: 10 }) {
      Chip({
        prefixIcon: {
          src: $r('app.media.chips'),
          size: { width: 16, height: 16 },
          fillColor: Color.Red
        },
        label: {
          text: "操作块",
          fontSize: 12,
          fontColor: Color.Blue,
          fontFamily: "HarmonyOS Sans",
          labelMargin: { left: 20, right: 30 }
        },
        suffixIcon: {
          src: $r('app.media.close'),
          size: { width: 16, height: 16 },
          fillColor: Color.Red
        },
        size: ChipSize.NORMAL,
        allowClose: false,
        enabled: true,
        backgroundColor: $r('sys.color.ohos_id_color_button_normal'),
        borderRadius: $r('sys.float.ohos_id_corner_radius_button')
      })
    }
  }
}

示例2(设置默认后缀图标)

该示例通过配置allowClose为true显示后缀删除图标。

import { Chip, ChipSize } from '@kit.ArkUI';

@Entry
@Component
struct Index {
  build() {
    Column({ space: 10 }) {
      Chip({
        prefixIcon: {
          src: $r('app.media.chips'),
          size: { width: 16, height: 16 },
          fillColor: Color.Blue
        },
        label: {
          text: "操作块",
          fontSize: 12,
          fontColor: Color.Blue,
          fontFamily: "HarmonyOS Sans",
          labelMargin: { left: 20, right: 30 }
        },
        size: ChipSize.NORMAL,
        allowClose: true,
        enabled: true,
        backgroundColor: $r('sys.color.ohos_id_color_button_normal'),
        borderRadius: $r('sys.float.ohos_id_corner_radius_button')
      })
    }
  }
}

示例3(不显示后缀图标)

该示例通过配置allowClose为false不显示后缀删除图标。

import { Chip, ChipSize } from '@kit.ArkUI';

@Entry
@Component
struct Index {
  build() {
    Column({ space: 10 }) {
      Chip({
        prefixIcon: {
          src: $r('app.media.chips'),
          size: { width: 16, height: 16 },
          fillColor: Color.Blue
        },
        label: {
          text: "操作块",
          fontSize: 12,
          fontColor: Color.Blue,
          fontFamily: "HarmonyOS Sans",
          labelMargin: { left: 20, right: 30 }
        },
        size: ChipSize.SMALL,
        allowClose: false,
        enabled: true,
        backgroundColor: $r('sys.color.ohos_id_color_button_normal'),
        borderRadius: $r('sys.float.ohos_id_corner_radius_button'),
        onClose:()=>{
          console.log("chip on close")
      }
      })
    }
  }
}

示例4(激活态操作块)

该示例通过配置activated实现激活态操作块。

import { Chip, ChipSize } from '@kit.ArkUI';

@Entry
@Component
struct Index {
  @State isActivated: boolean = false

  build() {
    Column({ space: 10 }) {
      Chip({
        prefixIcon: {
          src: $r('app.media.chips'),
          size: { width: 16, height: 16 },
          fillColor: Color.Blue,
          activatedFillColor: $r('sys.color.ohos_id_color_text_primary_contrary')
        },
        label: {
          text: "操作块",
          fontSize: 12,
          fontColor: Color.Blue,
          activatedFontColor: $r('sys.color.ohos_id_color_text_primary_contrary'),
          fontFamily: "HarmonyOS Sans",
          labelMargin: { left: 20, right: 30 }
        },
        size: ChipSize.NORMAL,
        allowClose: true,
        enabled: true,
        activated: this.isActivated,
        backgroundColor: $r('sys.color.ohos_id_color_button_normal'),
        activatedBackgroundColor: $r('sys.color.ohos_id_color_emphasize'),
        borderRadius: $r('sys.float.ohos_id_corner_radius_button'),
        onClose:()=>{
          console.log("chip on close")
        },
        onClicked:()=>{
          console.log("chip on clicked")
        }
      })

      Button('改变激活状态').onClick(()=>{
        this.isActivated = !this.isActivated
      })
    }
  }
}

示例5(设置symbol类型图标)

Chip组件的前缀、后缀图标使用symbol类型资源展示。

import { Chip, ChipSize, SymbolGlyphModifier } from '@kit.ArkUI';

@Entry
@Component
struct Index {
  @State isActivated: boolean = false

  build() {
    Column({ space: 10 }) {
      Chip({
        prefixIcon: {
          src: $r('app.media.chips'),
          size: { width: 16, height: 16 },
          fillColor: Color.Blue,
          activatedFillColor: $r('sys.color.ohos_id_color_text_primary_contrary')
        },
        prefixSymbol: {
          normal: new SymbolGlyphModifier($r('sys.symbol.ohos_star')).fontSize(16).fontColor([Color.Green]),
          activated: new SymbolGlyphModifier($r('sys.symbol.ohos_star')).fontSize(16).fontColor([Color.Red]),
        },
        label: {
          text: "操作块",
          fontSize: 12,
          fontColor: Color.Blue,
          activatedFontColor: $r('sys.color.ohos_id_color_text_primary_contrary'),
          fontFamily: "HarmonyOS Sans",
          labelMargin: { left: 20, right: 30 },
        },
        size: ChipSize.NORMAL,
        allowClose: true,
        enabled: true,
        activated: this.isActivated,
        backgroundColor: $r('sys.color.ohos_id_color_button_normal'),
        activatedBackgroundColor: $r('sys.color.ohos_id_color_emphasize'),
        borderRadius: $r('sys.float.ohos_id_corner_radius_button'),
        onClose:()=>{
          console.log("chip on close")
        },
        onClicked:()=>{
          console.log("chip on clicked")
        }
      })

      Button('改变激活状态').onClick(()=>{
        this.isActivated = !this.isActivated
      })
    }
  }
}

示例6(设置镜像效果)

该示例通过配置direction实现Chip布局镜像化展示。

import { Chip, ChipSize,LengthMetrics } from '@kit.ArkUI';

@Entry
@Component
struct ChipPage {

  build() {
    Column() {
      Chip({
        direction: Direction.Rtl,
        prefixIcon: {
          src: $r('app.media.chips'),
          size: { width: 16, height: 16 },
          fillColor: Color.Red,
        },
        label: {
          text: "操作块",
          fontSize: 12,
          fontColor: Color.Blue,
          fontFamily: "HarmonyOS Sans",
          localizedLabelMargin: { start: LengthMetrics.vp(20), end: LengthMetrics.vp(20) },
        },
        suffixIcon: {
          src: $r('app.media.close'),
          size: { width: 16, height: 16 },
          fillColor: Color.Red,
        },
        size: ChipSize.NORMAL,
        allowClose: false,
        enabled: true,
        backgroundColor: $r('sys.color.ohos_id_color_button_normal'),
        borderRadius: $r('sys.float.ohos_id_corner_radius_button')
      })
    }.justifyContent(FlexAlign.Center)
    .width('100%')
    .height('100%')
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值