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,
                        }),
                    ]
                })
            ]
        })
    ]
});