HarmonyOS 如何设置应用内悬浮窗,通过创建子窗口方式,但是子窗口加载的页面都是空白

通过windowStage.createSubWindow的方式创建子窗口,然后通过windowClass.setUIContent或者windowClass.loadContentByName加载页面,都是显示空白。

HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

请参考以下demo:

//FloatWindow.ets
// 引入window类
import window from '@ohos.window';
import { BusinessError } from '@ohos.base';
import router from '@ohos.router';

@Entry
@Component
struct FloatWindow {
  // 定义windowClass变量,用来接收创建的悬浮窗
  // 自定义创建悬浮窗方法
  createFloatWindow() {
    // 窗口类型设置为window.WindowType.TYPE_FLOAT
    let windowStage = AppStorage.get("windowStage") as window.WindowStage;

    // let config:window.Configuration = {name: "floatWindow", windowType: window.WindowType.TYPE_FLOAT, ctx: getContext(this)};
    // 创建悬浮窗
    windowStage.createSubWindow("floatWindow", (err, win) => {

      if (err.code) {
        console.error('Failed to create the floatWindow. Cause: ' + JSON.stringify(err));
        return;
      }
      console.info('Succeeded in creating the floatWindow. Data: ' + JSON.stringify(win));

      // 设置悬浮窗位置
      win.moveWindowTo(300, 300, (err) => {
        if (err.code) {
          console.error('Failed to move the window. Cause:' + JSON.stringify(err));
          return;
        }
        console.info('Succeeded in moving the window.');
      });
      // 设置悬浮窗大小
      win.resize(700, 200, (err) => {
        if (err.code) {
          console.error('Failed to change the window size. Cause:' + JSON.stringify(err));
          return;
        }
        console.info('Succeeded in changing the window size.');
      });
      // 为悬浮窗加载页面内容,这里可以设置在main_pages.json中配置的页面
      win.setUIContent("pages/FloatContent", (err: BusinessError) => {
        if (err.code) {
          console.error('Failed to load the content. Cause:' + JSON.stringify(err));
          return;
        }
        win.setWindowBackgroundColor("#00000000")
        console.info('Succeeded in loading the content.');
        // 显示悬浮窗。
        win.showWindow((err: BusinessError) => {
          if (err.code) {
            console.error('Failed to show the window. Cause: ' + JSON.stringify(err));
            return;
          }
          console.info('Succeeded in showing the window.');
        });
      });
    });
  }
}
分享
微博
QQ
微信
回复
2天前
相关问题
基于窗口实现应用悬浮
788浏览 • 1回复 待解决
如何通过代码关闭窗口
433浏览 • 1回复 待解决
如何设置窗口背景颜色?
401浏览 • 1回复 待解决
窗口加载页面是否可以带参数
441浏览 • 1回复 待解决
HarmonyOS 如何拖拽窗口
11浏览 • 1回复 待解决
arkTS无法创建窗口有了解吗?
2260浏览 • 0回复 待解决
应用窗口开发流程是什么
1965浏览 • 1回复 待解决
HarmonyOS 窗口跳转页面的返回问题
290浏览 • 1回复 待解决
如何实现一个页面显示窗口
739浏览 • 1回复 待解决
HarmonyOS api10如何窗口设置圆角
426浏览 • 1回复 待解决
HarmonyOS 窗口页面返回事件无效
45浏览 • 1回复 待解决