HarmonyOS 鸿蒙Next 如何在普通类中调用自定义组件,并正常展示
HarmonyOS 鸿蒙Next 如何在普通类中调用自定义组件,并正常展示
需要在普通类中的某个方法内调用自定义组件,怎么实现呢?代码示例如图:
更多关于HarmonyOS 鸿蒙Next 如何在普通类中调用自定义组件,并正常展示的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
import { ComponentContent, UIContext, window } from '@kit.ArkUI'
import { hilog } from '@kit.PerformanceAnalysisKit'
class FakeToastManager {
private currentContent: ComponentContent<Object> | undefined = undefined
action(uiContext: UIContext) {
this.currentContent = new ComponentContent<string>(uiContext, wrapBuilder(BuilderFake), '我是传递的内容')
uiContext.getPromptAction().openCustomDialog(this.currentContent, {
autoCancel: false,
alignment: DialogAlignment.Bottom,
isModal: false,
offset: {
dx: 0,
dy: '-90vp'
}
})
setTimeout(() => {
uiContext.getPromptAction().closeCustomDialog(this.currentContent)
}, 2000)
}
// Preview不可用,需要运行在模拟器跟真机
actionFake() {
window.getLastWindow(getContext()).then((windowClass) => {
let uiContext = windowClass.getUIContext()
this.action(uiContext)
})
}
}
@Entry
@ComponentV2
struct Index {
private fakeToast: FakeToastManager = new FakeToastManager()
build() {
Navigation() {
Column() {
Button('Fake Toast').onClick(() => {
this.fakeToast.action(this.getUIContext())
})
Blank()
Text('在fake toast展示时不影响界面点击').onClick(() => {
hilog.debug(0x000000, 'rainrain', 'click ---')
})
}.size({ width: '100%', height: '100%' })
}.size({ width: '100%', height: '100%' })
}
}
@Builder
function BuilderFake(text: string) {
FakeToast({ text: text })
}
@ComponentV2
struct FakeToast {
@Param text: string = ''
build() {
Column() {
Text('我是假Toast')
Text(this.text)
}.backgroundColor(Color.Green)
}
}
更多关于HarmonyOS 鸿蒙Next 如何在普通类中调用自定义组件,并正常展示的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
打个样,其余逻辑可以自行补充,比如弹多个,还是弹一个。
可以显示了,感谢大佬!!!
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17
我在这个action里调用官方提供的promptAction.showToast,是可以正常显示的 我实际是想实现类似promptAction.showToast的效果,但是需要带图片的toast
这个action是用来接收toast的属性值,传给自定义的toast,以便可以修改toast的样,然后再显示我想要的toast
在HarmonyOS 鸿蒙Next中,要在普通类中调用自定义组件并正常展示,可以按照以下步骤操作:
-
定义自定义组件: 在
resources/base/res/layout
目录下创建一个XML文件,定义你的自定义组件。例如,custom_component.xml
。 -
实现自定义组件的Java类(注意:鸿蒙使用ArkUI/eTS,不直接使用Java类,但这里模拟概念): 使用ArkUI/eTS脚本语言编写自定义组件的逻辑,并在
resources/base/ets/common
目录下创建相应的.ets
文件。 -
在普通类中引用: 在你的普通类(即页面或组件类)中,通过XML布局文件引用自定义组件。例如,在
MainAbilitySlice.ets
中:<DirectionalLayout> <YourCustomComponent /> <!-- 引用自定义组件 --> </DirectionalLayout>
确保
YourCustomComponent
与custom_component.xml
中的定义匹配。 -
确保资源正确加载: 检查
config.json
文件,确保资源路径和组件定义正确无误。 -
编译并运行: 编译项目并运行,检查自定义组件是否按预期展示。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html