HarmonyOS 鸿蒙Next:如何获取顶层window,并在上面添加button,同时动态控制button的显示与隐藏

发布于 1周前 作者 nodeper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next:如何获取顶层window,并在上面添加button,同时动态控制button的显示与隐藏

如何获取顶层window,并在上面添加button,同时动态控制button的显示与隐藏

3 回复
windowStage_.createSubWindow("mySubWindow", (err: BusinessError, data) => {
let sub_windowClass: window.Window = data;
sub_windowClass.moveWindowTo(0, 0, (err: BusinessError) => {})
sub_windowClass.resize(500,500, (err: BusinessError) => {})
sub_windowClass.setUIContent("pages/MyButton", (err: BusinessError) => {})
})

通过新增window的方式实现了,但还是有一些瑕疵,就是新增的window层会拦截点击事件,暂时没找到怎么解决透传点击事件到底层window的方案

window.getLastWindow(getContext()).then((windowClass) => {})

如果你是指自定义全局弹窗

参考:https://developer.huawei.com/consumer/cn/forum/topic/0202156174901893142?fid=0109140870620153026

在HarmonyOS(鸿蒙)开发中,获取顶层Window并在其上添加控件(如Button)以及动态控制其显示与隐藏,通常涉及到UI框架的深入理解和应用。在鸿蒙系统中,UI组件的构建主要通过XML布局文件和Java/Kotlin/JS等编程语言进行。

要实现您的需求,首先需要了解鸿蒙系统的Ability和Page组件架构。通常,您会在Page的布局文件中定义顶层容器(如DependentLayoutDirectionalLayout),然后在这个容器中添加Button。这可以通过XML直接定义,或者使用Java/Kotlin/JS代码在Page的onStart等方法中动态添加。

动态控制Button的显示与隐藏,可以通过修改Button的visibility属性来实现。在鸿蒙中,可以使用Visibility.VISIBLEVisibility.INVISIBLEVisibility.GONE来控制元素的可见性。

示例代码(以Java为例):

Button myButton = (Button) findComponentById(ResourceTable.Id_my_button);
// 显示Button
myButton.setVisibility(Visibility.VISIBLE);
// 隐藏Button,但不占用布局空间
myButton.setVisibility(Visibility.GONE);
// 隐藏Button,但保留布局空间
myButton.setVisibility(Visibility.INVISIBLE);

如果问题依旧没法解决,请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。注意,上述链接是示例地址,实际应访问HarmonyOS的官方开发者网站。

回到顶部