在悬浮窗场景下使用@ohos.promptAction展示Toast提示显示位置异常

如图,红框局域为悬浮窗,在悬浮窗场景下 使用@ohos.promptAction展示Toast提示显示位置异常,看起来坐标系是相对于悬浮窗窗口,而非应用的全屏窗口。如何实现悬浮窗场景下Toast提示位置和全屏窗口下保持一致。

在悬浮窗场景下使用@ohos.promptAction展示Toast提示显示位置异常-鸿蒙开发者社区

HarmonyOS
2024-09-04 10:04:51
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

应用全屏的时候,点击toast按钮,toast在应用的下方弹出,然后,设置悬浮窗点击toast按钮的时候,toast在同一个位置弹出,而不是在悬浮窗的位置弹出来。

目前问题定位在于每一个窗口存在对应的promptAction。需要在EntryAbility的onWindowStageCreate中存入windowStage:

onWindowStageCreate(windowStage: window.WindowStage): void { 
  // Main window is created, set main page for this ability 
  hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate'); 
 
  windowStage.loadContent('pages/Page1', (err) => { 
  if (err.code) { 
  hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); 
  return; 
} 
AppStorage.setOrCreate("windowStage",windowStage); 
hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.'); 
}); 
}

然后在页面中使用windowStage获取主窗口的promptAction进行弹窗操作:

.onClick(event => { 
  let mainWindow = (AppStorage.get("windowStage") as window.WindowStage).getMainWindowSync() 
  mainWindow.getUIContext().getPromptAction().showToast({ 
    message: "HelloWorld!!!!", 
    duration: 2000 
  }); 
})
分享
微博
QQ
微信
回复
2024-09-04 18:08:23
相关问题
HarmonyOS 多模块悬浮显示不出来
287浏览 • 1回复 待解决
HarmonyOS 如果显示类似Toast提示
330浏览 • 2回复 待解决
使用悬浮和端内want唤醒APP
823浏览 • 1回复 待解决
hsp子模块中如何加载悬浮页面
1807浏览 • 1回复 待解决
HarmonyOS有没有悬浮组件或者库
344浏览 • 1回复 待解决
如何实现悬浮桌面穿透
742浏览 • 1回复 待解决
HarmonyOS Toast 消息提示
175浏览 • 1回复 待解决
HarmonyOS 悬浮拖拽功能怎么处理?
239浏览 • 1回复 待解决
横屏应用如何适配华为悬浮?
2524浏览 • 1回复 待解决
基于子窗口实现应用内悬浮
653浏览 • 1回复 待解决
HarmonyOS 悬浮的文档在哪儿呢?
175浏览 • 1回复 待解决