1、HarmonyOS Tab组件里的tabBar点击如何拦截,根据情况判断是否允许切换tab?
Tab组件里的tabBar点击如何拦截,根据情况判断是否允许切换tab
暂时没有tabBar点击拦截功能实现,可以使用TabsController自定义页签以及并在其中添加事件进行逻辑判断,参考demo如下:
export class ButtonInfoModel {index: number = 0;info: string = 'home';title: string = 'Home';
}const buttonInfo: ButtonInfoModel[] = [{index: 0,info: 'home',title: 'Home'},{index: 1,info: 'map',title: 'Map'},{index: 2,info: 'charging',title: 'Charging'}
]@Component
export struct Home {@State message: string = 'Home';build() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)Text('点击之后无法进入charging页,会跳转map页').fontSize(20).fontWeight(FontWeight.Bold).onClick(() => {buttonInfo[2].info = "map"})}.width('100%')}.height('100%')}
}@Component
export struct Map {@State message: string = 'Map';build() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)}.width('100%')}.height('100%')}
}@Component
export struct Charging {@State message: string = 'Charging';build() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)}.width('100%')}.height('100%')}
}
2、HarmonyOS @Builder装饰的方法可以作为参数传递吗?
目前不支持这种传参规则。请参考如自定义构建函数的参数传递:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-builder-V5
ArkUI提供了一种轻量的UI元素复用机制@Builder,其内部UI结构固定,仅与使用方进行数据传递,开发者可以将重复使用的UI元素抽象成一个方法,在build方法里调用。
3、HarmonyOS 自定义组件支持链式调用吗?
自定义组件怎么实现系统组件那样的链式调用,如 XX() {}.a(“b”).c(“d”)
使用@Styles或@Extend装饰器,定义组件样式方法时,可以支持链式调用,参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-style-V5
如果每个组件的样式都需要单独设置,在开发过程中会出现大量代码在进行重复样式设置,虽然可以复制粘贴,但为了代码简洁性和后续方便维护,我们推出了可以提炼公共样式进行复用的装饰器@Styles。
@Styles装饰器可以将多条样式设置提炼成一个方法,直接在组件声明的位置调用。通过@Styles装饰器可以快速定义并复用自定义样式。
4、HarmonyOS @Observed 监听多层数据结构失败?
通过@ObjectLink和@Observed类装饰器的配合,在涉及嵌套对象或数组的场景中进行双向数据同步,详情参考:https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/arkts-observed-and-objectlink.md
5、HarmonyOS 如何实现page页面的横竖屏切换?
目前有页面横竖屏切换的需求,需要如何实现
设置横竖屏切换:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5#setpreferredorientation9
setPreferredOrientation(orientation: Orientation, callback: AsyncCallback<void>): void
设置主窗口的显示方向属性,使用callback异步回调。仅在支持跟随sensor旋转的设备上生效,2in1设备上调用不生效,自由多窗模式(可点击设备控制中心中的自由多窗按钮开启)下调用不生效,子窗调用后不生效。
窗口尺寸变化的监听:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5