Sapui5 sap.ui.layout.SplitPane不';不应用SplitterLayoutData
我正在尝试在左侧的Sapui5 sap.ui.layout.SplitPane不';不应用SplitterLayoutData,sapui5,Sapui5,我正在尝试在左侧的sap.ui.layout.SplitPane上设置大小,如下所示: 正如你在代码中看到的,我试图用 但这个尺寸根本不适用。我做错了什么 我看了这个例子:,请检查: 我想它解决了你的问题 此外,我还了解到,当布局为水平布局时,SplitterLayoutData size会按预期工作。更新:应从UI5 1.60版开始提供。否则,请继续阅读 我刚刚发现,只有当聚合位于默认聚合之后时,它才起作用 。。这其实并不重要。我将分析源代码,并在稍后更新答案。[1]但这就是如何
sap.ui.layout.SplitPane
上设置大小,如下所示:
正如你在代码中看到的,我试图用
但这个尺寸根本不适用。我做错了什么
我看了这个例子:,请检查:
我想它解决了你的问题
此外,我还了解到,当布局为水平布局时,SplitterLayoutData size会按预期工作。更新:应从UI5 1.60版开始提供。否则,请继续阅读
我刚刚发现,只有当聚合
位于默认聚合之后时,它才起作用
。。这其实并不重要。我将分析源代码,并在稍后更新答案。[1]但这就是如何“修复”它,使其暂时起作用的方法
资料来源:
[1] :原来SplitPane有一个覆盖的变量用于
layoutData
聚合:
SplitPane.prototype.setLayoutData=function(oLayoutdata){
var oContent=this.getContent();
如果(O内容){
返回oContent.setLayoutData(oLayoutdata);
}否则{
归还这个;
}
};
如您所见,它将布局数据应用于内容,而不是应用于自身。如果此时内容不存在,则忽略
。由于XML节点是经过计算的,面板(内容)必须在拆分布局数据之前
在我看来,这显然是框架中的一个缺陷,因为框架必须确保无论以何种顺序定义聚合(content layoutData),结果都是相同的。它不起作用,我目前在这里创建了一个示例,由于XML节点的顺序计算以及SplitPane如何应用布局数据,聚合的定义顺序并不重要:
oResponsiveSplitter = new sap.ui.layout.ResponsiveSplitter({
defaultPane: "defaultPane",
rootPaneContainer: [
new sap.ui.layout.PaneContainer({
orientation: "Horizontal",
panes: [
new sap.ui.layout.PaneContainer({
// orientation: "Horizontal",
panes: [
new sap.ui.layout.SplitPane({
demandPane: true,
content: new sap.m.Panel({
headerText: "1",
content: new sap.m.Text({text: lorem + lorem})
}),
requiredParentWidth: 400
}),
new sap.ui.layout.SplitPane({
demandPane: false,
content: new sap.m.Panel({
headerText: "2",
content: new sap.m.Text({text: lorem + lorem})
}),
requiredParentWidth: 400,
layoutData: new sap.ui.layout.SplitterLayoutData({
size: "20%"
})
}),
new sap.ui.layout.SplitPane({
demandPane: true,
content: new sap.m.Panel({
headerText: "3",
content: new sap.m.Text({text: lorem + lorem})
}),
requiredParentWidth: 400,
}),
]
})
]
})
]
});