我在OSX和Windows上运行了一个Electron应用程序。当Windows版本全屏时它仍然显示一个菜单栏,我不希望它。基本上我想要在OSX上发生的事情:当应用程序是“全屏”时,不会出现菜单栏或窗口“chrome”。
我在设置窗口期间尝试了setAutoHideMenuBar
,但没有任何区别。我使用它是错误的还是误解了它所支持的内容?
我在setMenu(null)
看到了一些质量保证建议,但不会完全打破菜单吗?我确实想要在窗口模式下使用菜单,或者在按下Alt键时(在Windows上)。
mainWindow = new BrowserWindow({
show: false,
width: 1024,
height: 768,
minWidth: 400,
minHeight: 200,
resizable: true,
backgroundColor: '#222',
center: true,
setAutoHideMenuBar: true
});
来自docs:
win.setAutoHideMenuBar(隐藏)
hide Boolean
设置窗口菜单栏是否应自动隐藏。 设置后,菜单栏将仅在用户按下单个Alt时显示 键。
如果菜单栏已经可见,则调用setAutoHideMenuBar(true) 不会立即隐藏它。
来自docs
win.setMenuBarVisibility(可见)Windows Linux
visible Boolean
设置菜单栏是否可见。如果菜单栏是 自动隐藏,用户仍然可以按下菜单栏 单个Alt键。
来自docs
win.setMenu(菜单)Linux Windows
menu Menu
将菜单设置为窗口的菜单栏,将其设置为null将删除 菜单栏。
答案 0 :(得分:1)
使用setFullScreen
方法。
function (item, focusedWindow) {
if (focusedWindow) {
focusedWindow.setFullScreen(!focusedWindow.isFullScreen())
}
}
答案 1 :(得分:1)
我的错误和“去图”
setAutoHideMenuBar
命令,试图在创建窗口时将其用作选项。正确的选项语法是autoHideMenuBar: true
。 app.on('ready', function () {
mainWindow = new BrowserWindow({
show: false,
width: 1024,
height: 768,
minWidth: 400,
minHeight: 200,
resizable: true,
backgroundColor: '#222',
center: true,
autoHideMenuBar: true
});
要处理全屏切换,在设置菜单时我使用了快捷方式
role: 'togglefullscreen'
虽然这样做并且包括键盘加速器,但菜单栏始终显示,autoHideMenuBar
设置显然被忽略。我不明白为什么。因此,我使用此菜单栏而不是快捷方式,而是正确隐藏。
{
label: 'Toggle Full Screen',
click: () => { toggleFullscreen();},
accelerator: 'CmdOrCtrl+f'
}
function toggleFullscreen() {
if (mainWindow.isFullScreen()) {
mainWindow.setFullScreen(false);
} else {
mainWindow.setFullScreen(true);
}
}