diff --git a/zh-cn/application-dev/reference/apis-arkui/arkui-ts/figures/applyDisabledAttribute.gif b/zh-cn/application-dev/reference/apis-arkui/arkui-ts/figures/applyDisabledAttribute.gif new file mode 100644 index 0000000000000000000000000000000000000000..ff047828eeaa2e38ac829e6f5e1d4a3ca58a20fc Binary files /dev/null and b/zh-cn/application-dev/reference/apis-arkui/arkui-ts/figures/applyDisabledAttribute.gif differ diff --git a/zh-cn/application-dev/reference/apis-arkui/arkui-ts/figures/applyFocusedAttribute.gif b/zh-cn/application-dev/reference/apis-arkui/arkui-ts/figures/applyFocusedAttribute.gif new file mode 100644 index 0000000000000000000000000000000000000000..f1502f158c16f7c9e1281ef6ba1cd47a97ec237a Binary files /dev/null and b/zh-cn/application-dev/reference/apis-arkui/arkui-ts/figures/applyFocusedAttribute.gif differ diff --git a/zh-cn/application-dev/reference/apis-arkui/arkui-ts/figures/applySelectedAttribute.gif b/zh-cn/application-dev/reference/apis-arkui/arkui-ts/figures/applySelectedAttribute.gif new file mode 100644 index 0000000000000000000000000000000000000000..01379c0bb6d0554464700854360b9821be096d3c Binary files /dev/null and b/zh-cn/application-dev/reference/apis-arkui/arkui-ts/figures/applySelectedAttribute.gif differ diff --git a/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-universal-attributes-attribute-modifier.md b/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-universal-attributes-attribute-modifier.md index 5f42d6de036f4afa94c6290bf0d149a3a1f38a3e..aba4f48ce13efb9b2b943d98d7661b89ea2073c0 100644 --- a/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-universal-attributes-attribute-modifier.md +++ b/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-universal-attributes-attribute-modifier.md @@ -317,6 +317,130 @@ struct Index { ``` ![attributeModifier](figures/attributeModifier.gif) +### 示例5(组件绑定Modifier获焦样式) + +该示例通过 Button 绑定 Modifier 实现了组件在获得焦点时的样式效果。点击 Button2 后,Button 会显示获得焦点后的样式。 + +```ts +class MyButtonModifier implements AttributeModifier { + + applyNormalAttribute(instance: ButtonAttribute): void { + instance.backgroundColor(Color.Blue) + } + applyFocusedAttribute(instance: ButtonAttribute): void { + instance.backgroundColor(Color.Green) + } +} + +@Entry +@Component +struct attributeDemo { + @State modifier: MyButtonModifier = new MyButtonModifier() + @State isDisable: boolean = true; + + build() { + Row() { + Column() { + Button("Button") + .attributeModifier(this.modifier) + .enabled(this.isDisable) + .id("app") + Divider().vertical(false).strokeWidth(15).color(Color.Transparent) + Button("Button2") + .onClick(() => { + this.getUIContext().getFocusController().activate(true) + this.getUIContext().getFocusController().requestFocus("app") + }) + } + .width('100%') + } + .height('100%') + } +} +``` +![applyFocusedAttribute](figures/applyFocusedAttribute.gif) + +### 示例6(组件绑定Modifier禁用状态的样式) + +该示例通过 Button 绑定 Modifier 实现了组件禁用时的样式效果。点击 Button2 后,Button 会显示禁用状态的样式。 + +```ts +class MyButtonModifier implements AttributeModifier { + applyDisabledAttribute(instance: ButtonAttribute): void { + instance.width(200) + } +} + +@Entry +@Component +struct attributeDemo { + @State modifier: MyButtonModifier = new MyButtonModifier() + @State isDisable: boolean = true + + build() { + Row() { + Column() { + Button("Button") + .attributeModifier(this.modifier) + .enabled(this.isDisable) + Divider().vertical(false).strokeWidth(15).color(Color.Transparent) + Button("Button2") + .onClick(() => { + this.isDisable = !this.isDisable + }) + } + .width('100%') + } + .height('100%') + } +} +``` +![applyDisabledAttribute](figures/applyDisabledAttribute.gif) + +### 示例7(组件绑定Modifier选中状态样式) + +该示例通过Radio绑定Modifier实现了展示组件选中时样式的效果。 + +```ts +class MyRadioModifier implements AttributeModifier { + applyNormalAttribute(instance: RadioAttribute): void { + instance.backgroundColor(Color.Blue) + } + applySelectedAttribute(instance: RadioAttribute): void { + instance.backgroundColor(Color.Red) + instance.borderWidth(2) + } +} + +@Entry +@Component +struct attributeDemo { + @State modifier: MyRadioModifier = new MyRadioModifier() + @State value: boolean = false + @State value2: boolean = false + + build() { + Row() { + Column() { + Radio({ value: 'Radio1', group: 'radioGroup1' }) + .checked(this.value) + .height(50) + .width(50) + .borderWidth(0) + .borderRadius(30) + .onClick(() => { + this.value = !this.value + }) + .attributeModifier(this.modifier) + } + .width('100%') + } + .height('100%') + } +} +``` +![applySelectedAttribute](figures/applySelectedAttribute.gif) + ## Attribute支持范围 未在表格中列举的属性默认为支持。 diff --git a/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-universal-attributes-polymorphic-style.md b/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-universal-attributes-polymorphic-style.md index c823101bc1370d0d16948e65f427b2e3971a242a..2c2c5fb07f7de03e3444dac58d44d7db6acfe7d1 100644 --- a/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-universal-attributes-polymorphic-style.md +++ b/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-universal-attributes-polymorphic-style.md @@ -59,6 +59,10 @@ stateStyles(value: StateStyles) | [GridItem](ts-container-griditem.md) | selected | 10 | | [MenuItem](ts-basic-components-menuitem.md) | selected | 10 | +**pressed和clicked状态说明** + +- 当clicked和pressed同时在一个组件上使用时,只有后注册的状态才能生效。 + ## 示例 ### 示例1(设置Text多态样式)