我有一个基于 UI5 的应用程序(1.66+),它可以正常工作,但是屏幕的左右两侧有巨大的空白区域(也就是开启信箱):
我想禁用信箱以使用整个屏幕空间。
到目前为止,我尝试了以下方法:
"fullWidth": true
在manifest.jsonsap.ui
部分使用- 要将桌面相关的类添加到index.html中的 HTML 标记:
<html class="sap-desktop sapUiMedia-Std-Desktop sapUiMedia-StdExt-LargeDesktop">
- 添加
appWidthLimited: false
到index.html:
<script>
sap.ui.getCore().attachInit(function () {
new sap.m.Shell({
app: new sap.ui.core.ComponentContainer({
height: "100%",
name: "APPNAME"
}),
appWidthLimited: false
}).placeAt("content");
});
</script>
就像《如何在 SAPUI5 中自定义 Shell 容器》中描述的一样。
但它们都不适合我。
更新:
我通过静态 XML 模板成功解决了这个问题——只需添加<Shell id="shell" appWidthLimited="false">
到主 XML 模板,但现在我想了解如何通过new sap.m.Shell(…)
定义中的 JS 来实现它。
代码实验的起点如下。
索引.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>widescreen</title>
<script id="sap-ui-bootstrap"
src="../../resources/sap-ui-core.js"
data-sap-ui-theme="sap_fiori_3"
data-sap-ui-resourceroots='{"letterboxing.widescreen": "./"}'
data-sap-ui-compatVersion="edge"
data-sap-ui-oninit="module:sap/ui/core/ComponentSupport"
data-sap-ui-async="true"
data-sap-ui-frameOptions="trusted">
</script>
</head>
<body class="sapUiBody">
<div data-sap-ui-component data-name="letterboxing.widescreen" data-id="container" data-settings='{"id" : "widescreen"}' id="content"></div>
</body>
</html>
组件.js:
sap.ui.define([
"sap/ui/core/UIComponent",
"sap/ui/Device",
"letterboxing/widescreen/model/models"
], function (UIComponent, Device, models) {
"use strict";
return UIComponent.extend("letterboxing.widescreen.Component", {
metadata: {
manifest: "json"
},
init: function () {
// call the base component's init function
UIComponent.prototype.init.apply(this, arguments);
// enable routing
this.getRouter().initialize();
// set the device model
this.setModel(models.createDeviceModel(), "device");
}
});
});