1、HarmonyOS 如果将component组件对象当作参数参数传入到一个类中,并在类中修改component中元素是否显示?
目前的规格是组件不能作为参数进行传递的,对于自定义组件可以通过声明参数为builderParam,传递自定义builder。
- 自定义构建函数:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-builder-V5
- 封装全局@Builder:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-wrapbuilder-V5
2、HarmonyOS CanvasRenderingContext2D 支持在 TaskPool中使用吗?
布绘制和UI相关,不适合在子线程中操作,如果 的绘制涉及大比较大的数据计算、处理, 可以在task中处理数据,处理完返回主线程,再进行绘制,并且Canvas并不在官方验证的线程安全的模块之列,所以建议 不要在子线程中直接绘制。
3、HarmonyOS bindSheet内部使用Tabs组件,滚动事件无法联动?
布局问题, Tabt和list布局没有叠加在一起,只有按顶部的tabContent下拉才有效,在外面加一层布局包裹就可以了,代码如下
@Builder
sheetBuilder() {
Column() {
Tabs() {
ForEach([1, 2], (value: number) => {
TabContent() {
this.listBuilder()
}.tabBar(value.toString())
})
}
}
}
4、HarmonyOS Web组件中加载的网页如何设置默认不获取焦点?
requestFocus(): void 使当前web页面获取焦点。
示例代码如下:
// xxx.ets
import { webview } from '@kit.ArkWeb';
import { BusinessError } from '@kit.BasicServicesKit';
@Entry
@Component
struct WebComponent {
controller: webview.WebviewController = new webview.WebviewController();
build() {
Column() {
Button('requestFocus')
.onClick(() => {
try {
this.controller.requestFocus();
} catch (error) {
console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
}
});
Web({ src: 'www.example.com', controller: this.controller })
}
}
}
5、HarmonyOS Text加载藏文时,显示异常?
使用Text加载超过单行少数民族文字时,设置 .maxLines(1)属性,导致文字前有大段空白,设置.maxLines(1)和.textOverflow({overflow: TextOverflow.Ellipsis}),文字前有大段空白,省略号在前面。
想要文字在控件居中可设置textAlign(TextAlign.Center),解决文字省略号提前导致前面有一大段空白问题可设置wordBreak(WordBreak.BREAK_ALL)