From 32a886ddcf64fd84d0a36c1fbf1643d3ae4e500b Mon Sep 17 00:00:00 2001 From: qlxie Date: Fri, 20 Jun 2025 20:15:42 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E6=96=87=E6=A1=A3=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=86=85=E5=AE=B9=E8=AF=B4=E6=98=8E01?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: qlxie --- .../arkui-ts/figures/stateStyles_builder.gif | Bin 0 -> 3427 bytes ...-universal-attributes-polymorphic-style.md | 62 +++++++++++++++++- 2 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 zh-cn/application-dev/reference/apis-arkui/arkui-ts/figures/stateStyles_builder.gif diff --git a/zh-cn/application-dev/reference/apis-arkui/arkui-ts/figures/stateStyles_builder.gif b/zh-cn/application-dev/reference/apis-arkui/arkui-ts/figures/stateStyles_builder.gif new file mode 100644 index 0000000000000000000000000000000000000000..e5dbe22007bcc4fa277a63715857dc15fe648d99 GIT binary patch literal 3427 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 从API version 11开始支持另一种写法[attributeModifier](./ts-universal-attributes-attribute-modifier.md),可根据开发者需要动态设置属性。 > > 多态样式仅支持[通用属性](ts-component-general-attributes.md)。如果多态样式不生效,则该属性可能为组件的私有属性,例如:[fontColor](./ts-universal-attributes-text-style.md)、[TextInput](./ts-basic-components-textinput.md)组件的[backgroundColor](./ts-universal-attributes-background.md#backgroundcolor18)等。此时,可以通过attributeModifier动态设置组件属性来解决此问题。 +> +> 当前多态样式的实现依赖于组件自定义节点的刷新机制。由于Builder不具备独立的自定义父节点,无法直接触发刷新,导致多态样式无法在纯Builder环境中生效。可以通过将多态样式封装至自定义组件内部,再将组件放进@Builder中,以此来间接实现多态样式。代码示例可参考[示例三](#示例3设置builder多态样式)。 ## stateStyles @@ -235,4 +237,62 @@ struct Index { } ``` -![selected](figures/selected.gif) \ No newline at end of file +![selected](figures/selected.gif) + +### 示例3(设置Builder多态样式) + +该示例展示了状态为pressed时Builder组件的样式变化。 + +```ts +import { ComponentContent } from '@kit.ArkUI'; +import { BusinessError } from '@kit.BasicServicesKit'; + +@Component +struct Child { + build() { + Row() + .zIndex(10) + .width(100) + .height(200) + .stateStyles({ + normal: { + .backgroundColor(Color.Red) + }, + pressed: { + .backgroundColor(Color.Black) + } + }) + } +} + +@Builder +function +buildText() { + Child() +} + +@Entry +@Component +struct Index { + private contentNode: ComponentContent = + new ComponentContent(this.getUIContext(), wrapBuilder(buildText)); + + build() { + Button().onClick((event: ClickEvent) => { + this.getUIContext() + .getPromptAction() + .openCustomDialog(this.contentNode) + .then(() => { + console.info('OpenCustomDialog complete.') + }) + .catch((error: BusinessError) => { + let message = (error as BusinessError).message; + let code = (error as BusinessError).code; + console.error(`OpenCustomDialog args error code is ${code}, message is ${message}`); + }) + }) + } +} +``` + +![Builder](figures/stateStyles_builder.gif) \ No newline at end of file -- Gitee