HarmonyOS 鸿蒙Next 在顶层视图追加一个视图
HarmonyOS 鸿蒙Next 在顶层视图追加一个视图 当页面h5页面需要下载文件时,通过桥接方法通知原生去下载,然后需要显示进度条,我们是否有办法在顶层视图的底部添加一个视图显示下载进度
如果只是让视图显示的话,添加ArkTS声明式ui是用条件+状态管理来控件渲染。所以可以通过if……else……或者某个数据的true/false来动态添加或者销毁。 或者 可以通过wrapBuilder封装全局@Builder来实现,不同的组件可以设置不同的@builder。 可以参考文档: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-wrapbuilder-V5 动态添加view。 类似demo
// 定义一个空的builder
[@Builder](/user/Builder)
function defaultBuilder(): void {}
// 定义一个class,有对应的WrappedBuilder
export class DataModel {
id: string = ''
value: string = ''
otherProp: string = ''
builderWrap: WrappedBuilder<[string]> = wrapBuilder(defaultBuilder)
constructor(id: string, value: string, builderWrap: WrappedBuilder<[string]>) {
this.id = id
this.value = value
this.builderWrap = builderWrap
}
}
[@Builder](/user/Builder)
function CustomBuilder(param: string) {
Column() {
Text(param)
.fontSize(50)
.fontWeight(FontWeight.Bold)
}.height(50)
}
let customPageWrappedBuilder: WrappedBuilder<[string]> = wrapBuilder(CustomBuilder);
export function getNewsData(): Promise<DataModel[]> {
let arr: DataModel[] = [new DataModel('1', 'test1', customPageWrappedBuilder), new DataModel('2', 'test2', customPageWrappedBuilder)]
return new Promise(resolve => {
resolve(arr)
})
}
export function getNewsItem(id: string, value: string): Promise<DataModel> {
return new Promise(resolve => {
resolve(new DataModel(id, value, customPageWrappedBuilder))
})
}
@Entry
@Component
struct WrapperBuilderPage {
@State testData: DataModel[] = []
@State count: number = 2
async aboutToAppear() {
this.testData = await getNewsData();
}
build() {
Column() {
Row() {
Button('addView').onClick(async () => {
this.count++
let newsItem: DataModel = await getNewsItem('' + this.count, 'test' + this.count)
this.testData.push(newsItem)
})
Button('removeView').onClick(async () => {
this.count--
this.testData.pop()
})
}
Column() {
ForEach(this.testData, (item: DataModel) => {
item.builderWrap.builder(item.value)
})
}
}
.width('100%')
.height('100%')
}
}
更多关于HarmonyOS 鸿蒙Next 在顶层视图追加一个视图的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS(鸿蒙)系统中,若想在顶层视图(通常指根视图或活动窗口)中追加一个视图,你可以通过以下步骤实现。这里假设你已经熟悉鸿蒙系统的开发环境和基础组件使用。
-
获取顶层视图容器:首先,你需要获取当前活动的顶层视图容器。这通常是通过布局文件或代码动态创建的根视图。
-
创建新视图:根据你的需求,创建一个新的视图组件(如
Component
或其子类)。确保新视图已经正确初始化并设置了必要的属性。 -
添加视图到顶层容器:使用顶层容器的
addComponent
或类似方法,将新创建的视图添加到容器中。这通常涉及到指定视图的位置和大小参数,或者通过布局管理器自动处理。 -
刷新界面:在某些情况下,你可能需要调用相关方法来刷新界面,以确保新添加的视图能够立即显示。
示例代码(伪代码,具体实现需根据实际API调整):
// 假设topLevelContainer是顶层视图容器
Component* newView = new CustomComponent(); // 创建新视图
topLevelContainer->addComponent(newView); // 添加视图到容器
// 根据需要调用刷新方法
请注意,实际操作中可能需要根据鸿蒙系统的具体API和组件库进行调整。如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html,