首页 > 解决方案 > “autohideMenuBar”的动态切换不起作用吗?

问题描述

电子 7.1.10,Windows 10

当我的应用程序进入全屏时,我试图关闭菜单可见性并使其“自动隐藏”,以便可以通过 Alt 键访问它。下面的代码确实将其关闭,但没有启用“通过 Alt 键显示”行为。

我试过注释掉这些mainindow.setMenuBarVisibility();调用,因为这可能是绝对的:菜单永远不会显示,但菜单仍然全屏显示。我也尝试过更改顺序,以便mainindow.autohideMenuBar = true在将可见性设置为 false 之前调用。没运气。

有人遇到过这种情况么?

BrowserWindow文档似乎表明我正在尝试做的事情应该有效:

win.setMenuBarVisibility(visible) Windows Linux

visible Boolean

设置菜单栏是否可见。如果菜单栏是自动隐藏的,用户仍然可以通过按单个 Alt 键来调出菜单栏。


    if (mainindow.isFullScreen()) {
        // coming out of full screen
        mainindow.setMenuBarVisibility(true);
        mainindow.autohideMenuBar = false
        mainindow.setFullScreen(false);
    } else {
        // entering full screen
        mainindow.setMenuBarVisibility(false);
        mainindow.autohideMenuBar = true
        mainindow.setFullScreen(true);
    }

标签: javascriptelectron

解决方案


因此设置属性不起作用,但使用较旧的方法setAutoHideMenuBar可以 - 尽管文档声明不推荐使用。似乎是一个错误。

Electron 团队目前正在进行一项计划,将 Electron 中单独的 getter 和 setter 函数转换为具有 get 和 set 功能的定制属性。在此过渡期间,这些函数的新属性和旧 getter 和 setter 都将正常工作并记录在案。


win.setAutoHideMenuBar(隐藏)

hide Boolean

设置窗口菜单栏是否应自动隐藏。一旦设置,菜单栏只会在用户按下单个 Alt 键时显示。

如果菜单栏已经可见,调用 setAutoHideMenuBar(true) 不会立即隐藏它。

已弃用


if (mainWindow.isFullScreen()) {
    // coming out of FS
    // mainWindow.autohideMenuBar = false
    mainWindow.setAutoHideMenuBar(false);
    mainWindow.setMenuBarVisibility(true);
    mainWindow.setFullScreen(false);
} else {
    // mainWindow.autohideMenuBar = true
    mainWindow.setAutoHideMenuBar(true);
    mainWindow.setMenuBarVisibility(false);
    mainWindow.setFullScreen(true);
}

推荐阅读