在悬浮窗场景下使用@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 多模块悬浮显示不出来
387浏览 • 1回复 待解决
HarmonyOS 如果显示类似Toast提示
418浏览 • 2回复 待解决
使用悬浮和端内want唤醒APP
961浏览 • 1回复 待解决
HarmonyOS PromptAction无法弹出Toast
28浏览 • 1回复 待解决
HarmonyOS 横向悬浮
0浏览 • 0回复 待解决
HarmonyOS 是否支持悬浮能力
36浏览 • 1回复 待解决
hsp子模块中如何加载悬浮页面
1957浏览 • 1回复 待解决
HarmonyOS 悬浮的圆角怎么处理?
85浏览 • 1回复 待解决
HarmonyOS Toast 消息提示
297浏览 • 1回复 待解决