HarmonyOS 鸿蒙Next 自定义Toggle内容triggerChange后动画消失
HarmonyOS 鸿蒙Next 自定义Toggle内容triggerChange后动画消失
我想给Toggle
增加一个标题文字和开关文字,如图
所以照葫芦画瓢写了这样一段
export default class MySwitchStyle implements ContentModifier<ToggleConfiguration> {
header: string;
onContent: string;
offContent: string;
constructor(header: string, onContent: string, offContent: string)
{
this.header = header;
this.onContent = onContent;
this.offContent = offContent;
}
applyContent() : WrappedBuilder<[ToggleConfiguration]>
{
return wrapBuilder(buildSwitch)
}
static columnSpacing = 7;
static rowSpacing = 12;
}
@Builder
function buildSwitch(config: ToggleConfiguration)
{
Column({ space: MySwitchStyle.columnSpacing })
{
Text((config.contentModifier as MySwitchStyle).header)
Row({space: MySwitchStyle.rowSpacing})
{
Toggle({type: ToggleType.Switch, isOn: config.isOn})
.onChange((isOn: boolean) =>
{
//注释这行,文字不会变化
//不注释这行,文字会变化,但Toggle的动画消失
//config.triggerChange(isOn);
})
Text(config.isOn? (config.contentModifier as MySwitchStyle).onContent : (config.contentModifier as MySwitchStyle).offContent)
}
}
.alignItems(HorizontalAlign.Start)
}
看triggerChange
这一行,会导致Toggle
本身的动画消失,请问如何解决?
更多关于HarmonyOS 鸿蒙Next 自定义Toggle内容triggerChange后动画消失的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
6 回复
Toggle({ type: ToggleType.Switch, isOn: false })
.onChange((isOn: boolean) => {
if(isOn) {
// 需要执行的操作
}
})
你可以直接给 text
绑定个状态值,然后根据 isOn
去改就好了啊。
更多关于HarmonyOS 鸿蒙Next 自定义Toggle内容triggerChange后动画消失的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
状态值放在哪里呢?那个MySwitchStyle不是个自定义组件,不能放@State,
这是一个示例 Markdown 文档。
- 名称: 示例
- 描述: 这是一个用于展示如何将 HTML 转换为 Markdown 的示例。
- 创建日期: 2023-10-05
- 修改日期: 2023-10-06
triggerChange 能写在这个 onChange 里面吗?这里是不是有问题啊。
不是很懂呢,如果不triggerChange,文字没有改,然后外面的其他控件绑定enabled到这个Toggle也不会变,