b7c197b8创建于 2025年12月12日历史提交

@ohos.arkui.theme(主题换肤)

支持自定义主题风格,实现App组件风格跟随Theme切换。

说明:

本模块首批接口从API version 12开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

import { Theme, ThemeControl, CustomColors, Colors, CustomTheme, CustomDarkColors } from '@kit.ArkUI';

Theme

当前生效的主题风格对象,可从onWillApplyTheme中获取。

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

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

名称 类型 只读 可选 说明
colors Colors 主题颜色资源。

Colors

主题颜色资源。

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

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

名称 类型 只读 可选 说明
brand ResourceColor 品牌色。
影响组件: TextInputSearch
warning ResourceColor 一级警示色。
影响组件: TipsDialogAlertDialogCustomContentDialog
BadgeButton
alert ResourceColor 二级提示色。
影响组件: 暂无组件使用。
confirm ResourceColor 确认色。
影响组件: 暂无组件使用。
fontPrimary ResourceColor 一级文本字体颜色。
影响组件: EditableTitleBarLoadingDialogTipsDialog
ConfirmDialogAlertDialogSelectDialog
CustomContentDialogSwiperText
SubHeaderProgressButtonAlphabetIndexer
PopupSelectChip
ToolBarMenuTextInput
SearchCounterTimePickerDatePicker
TextPickerComposeListItemTreeView
fontSecondary ResourceColor 二级文本字体颜色。
影响组件: EditableTitleBarAlertDialogCustomContentDialog
SubHeaderAlphabetIndexerPopup
TextInputSearchComposeListItem
TreeView
fontTertiary ResourceColor 三级文本字体颜色。
影响组件: ComposeListItem
fontFourth ResourceColor 四级文本字体颜色。
影响组件: 暂无组件使用。
fontEmphasize ResourceColor 高亮字体颜色。
影响组件: TipsDialogConfirmDialogAlertDialog
SelectDialogCustomContentDialogSubHeader
AlphabetIndexerPopupButton
SelectToolBarSearch
TimePickerDatePickerTextPicker
fontOnPrimary ResourceColor 一级文本反转颜色,用于彩色背景。
影响组件: BadgeButtonChip
fontOnSecondary ResourceColor 二级文本反转颜色,用于彩色背景。
影响组件: 暂无组件使用。
fontOnTertiary ResourceColor 三级文本反转颜色,用于彩色背景。
影响组件: 暂无组件使用。
fontOnFourth ResourceColor 四级文本反转颜色,用于彩色背景。
影响组件: 暂无组件使用。
iconPrimary ResourceColor 一级图标颜色。
影响组件: EditableTitleBarSwiperToolBar
TreeView
iconSecondary ResourceColor 二级图标颜色。
影响组件: LoadingDialogSubHeaderLoadingProgress
PopupChipSearch
TreeView
iconTertiary ResourceColor 三级图标颜色。
影响组件: SubHeader
iconFourth ResourceColor 四级图标颜色。
影响组件: CheckboxCheckboxGroupRadio
iconEmphasize ResourceColor 高亮图标颜色。
影响组件: ToolBar
iconSubEmphasize ResourceColor 高亮辅助图标颜色。
影响组件: 暂无组件使用。
iconOnPrimary ResourceColor 一级图标反转颜色,用于彩色背景。
影响组件: CheckboxCheckboxGroupRadio
iconOnSecondary ResourceColor 二级图标反转颜色,用于彩色背景。
影响组件: Chip
iconOnTertiary ResourceColor 三级图标反转颜色,用于彩色背景。
影响组件: 暂无组件使用。
iconOnFourth ResourceColor 四级图标反转颜色,用于彩色背景。
影响组件: ProgressButton
backgroundPrimary ResourceColor 一级背景颜色(实色,不透明)。
影响组件: TextInputQRCode
backgroundSecondary ResourceColor 二级背景颜色(实色,不透明)。
影响组件: 暂无组件使用。
backgroundTertiary ResourceColor 三级背景颜色(实色,不透明)。
影响组件: 暂无组件使用。
backgroundFourth ResourceColor 四级背景颜色(实色,不透明)。
影响组件: 暂无组件使用。
backgroundEmphasize ResourceColor 高亮背景颜色(实色,不透明)。
影响组件: ProgressButtonSlider
compForegroundPrimary ResourceColor 前背景。
影响组件: QRCode
compBackgroundPrimary ResourceColor 白色背景。
影响组件: 暂无组件使用。
compBackgroundPrimaryTran ResourceColor 白色透明背景。
影响组件: 暂无组件使用。
compBackgroundPrimaryContrary ResourceColor 常亮背景。
影响组件: ToggleSlider
compBackgroundGray ResourceColor 灰色背景。
影响组件: 暂无组件使用。
compBackgroundSecondary ResourceColor 二级背景。
影响组件: SwiperSlider
compBackgroundTertiary ResourceColor 三级背景。
影响组件: EditableTitleBarProgressAlphabetIndexer
ButtonSelectToggle
ChipTextInputSearch
compBackgroundEmphasize ResourceColor 高亮背景。
影响组件: SwiperToggleChip
CheckboxCheckboxGroupRadio
compBackgroundNeutral ResourceColor 黑色中性高亮背景颜色。
影响组件: PatternLock
compEmphasizeSecondary ResourceColor 20%高亮背景颜色。
影响组件: ProgressProgressButtonAlphabetIndexer
SelectToggle
compEmphasizeTertiary ResourceColor 10%高亮背景颜色。
影响组件: 暂无组件使用。
compDivider ResourceColor 通用分割线颜色。
影响组件: SelectDialogPatternLockDivider
compCommonContrary ResourceColor 通用反转颜色。
影响组件: 暂无组件使用。
compBackgroundFocus ResourceColor 获焦态背景颜色。
影响组件: 暂无组件使用。
compFocusedPrimary ResourceColor 获焦态一级反转颜色。
影响组件: 暂无组件使用。
compFocusedSecondary ResourceColor 获焦态二级反转颜色。
影响组件: 暂无组件使用。
compFocusedTertiary ResourceColor 获焦态三级反转颜色。
影响组件: Scroll
interactiveHover ResourceColor 通用悬停交互式颜色。
影响组件: EditableTitleBarChipTreeView
interactivePressed ResourceColor 通用按压交互式颜色。
影响组件: EditableTitleBarChipTreeView
interactiveFocus ResourceColor 通用获焦交互式颜色。
影响组件: EditableTitleBarChipTreeView
interactiveActive ResourceColor 通用激活交互式颜色。
影响组件: TreeView
interactiveSelect ResourceColor 通用选择交互式颜色。
影响组件: TreeView
interactiveClick ResourceColor 通用点击交互式颜色。
影响组件: 暂无组件使用。

CustomTheme

自定义主题风格对象。

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

名称 类型 只读 可选 说明
colors CustomColors 自定义主题颜色资源。
原子化服务API: 从API version 12开始,该接口支持在原子化服务中使用。
darkColors20+ CustomDarkColors 自定义深色主题颜色资源。
说明:如果未设置darkColors,颜色值将与浅色模式下的colors配置相同,并且不会随着颜色模式的变化而变化,除非该颜色是通过dark目录下的资源进行设置的。
原子化服务API: 从API version 20开始,该接口支持在原子化服务中使用。

CustomColors

type CustomColors = Partial<Colors>

自定义主题颜色资源类型。

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

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

类型 说明
Partial<Colors> 自定义主题颜色资源类型。

CustomDarkColors20+

type CustomDarkColors = Partial<Colors>

自定义深色主题颜色资源类型。

原子化服务API: 从API version 20开始,该接口支持在原子化服务中使用。

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

类型 说明
Partial<Colors> 自定义深色主题颜色资源类型。

ThemeControl

ThemeControl将自定义Theme应用于App组件内,实现App组件风格跟随Theme切换。

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

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

setDefaultTheme

setDefaultTheme(theme: CustomTheme): void

将用户自定义Theme设置应用级默认主题,以实现应用风格跟随Theme切换。若在页面中使用此接口设置应用级默认主题,需确保该接口在页面build前执行。若在UIAbility中使用此接口设置应用级默认主题,需确保该接口在onWindowStageCreate阶段里windowStage.loadContent接口调用完成的回调函数中执行。详细代码可参考设置应用内组件自定义主题色

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

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

参数:

参数名 类型 必填 说明
theme CustomTheme 表示设置的自定义主题风格。

示例

import { CustomTheme, CustomColors, ThemeControl } from '@kit.ArkUI';
// 自定义主题颜色
class BlueColors implements CustomColors {
  fontPrimary = "#FF707070";
  backgroundPrimary = "#FF2787D9";
  brand = "#FFEEAAFF"; // 品牌色
}

class PageCustomTheme implements CustomTheme {
  colors?: CustomColors;

  constructor(colors: CustomColors) {
    this.colors = colors;
  }
}
// 创建实例
const BlueColorsTheme = new PageCustomTheme(new BlueColors());
// 在页面build之前执行ThemeControl.setDefaultTheme,设置App默认样式风格为BlueColorsTheme。
ThemeControl.setDefaultTheme(BlueColorsTheme);

@Entry
@Component
struct Index {

  build() {
    Row() {
      Column() {
        // 文本颜色应用fontPrimary
        Text('这是一段文本')
          .fontSize(30)
          .fontWeight(FontWeight.Bold)
          .margin('5%')
        // 二维码背景色应用backgroundPrimary
        QRCode('Hello')
          .width(100)
          .height(100)
        // 输入框光标颜色应用brand
        TextInput({placeholder: 'input your word...'})
          .width('80%')
          .height(40)
          .margin(20)
      }
      .width('100%')
    }
    .height('100%')
  }
}

zh-cn_image_setDefaultTheme_light

zh-cn_image_setDefaultTheme_night