我有一个GridLayout视图,其中2个内容是TreeTable,另一个是Panel
我需要显示两个内容具有相同的高度,但我在Panel内的自定义控件的高度不同
查看
<mvc:View xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc"
class="sapUiSizeCompact" xmlns="sap.m" xmlns:l="sap.ui.layout"
xmlns:table="sap.ui.table"
xmlns:testResp="chiru.controller"
height="100%">
<l:Grid defaultSpan="L10 M10 S10" class="sapUiNoMarginTop sapUiNoMarginBottom sapUiNoMarginBegin sapUiNoMarginEnd">
<l:content>
<table:TreeTable
selectionMode="MultiToggle"
enableSelectAll="false"
rows="{path:'/resources', parameters: {arrayNames:['categories']}}">
<table:layoutData>
<l:GridData span="L2 M2 S2" />
</table:layoutData>
<table:columns>
<table:Column width="13rem">
<Label text="Resources"/>
<table:template>
<Text text="{name}"/>
</table:template>
</table:Column>
</table:columns>
</table:TreeTable>
<Panel height="100%">
<content>
<testResp:TestResp resources="{/resources}">
</testResp:TestResp>
</content>
</Panel>
</l:content>
</l:Grid>
</mvc:View>
我的自定义控件TestResp是
/**
*
*/
sap.ui.define([
"sap/ui/core/Control",
"sap/ui/core/HTML"
], function (Control,HTML) {
"use strict";
return Control.extend("chiru.controller.TestResp", {
metadata : {
properties : {
width: {type : "sap.ui.core.CSSSize", defaultValue : "100%"},
height: {type : "sap.ui.core.CSSSize", defaultValue : "100%"},
resources : {type : "Array", defaultValue : []},
demands : {type : "Array", defaultValue : []}
},
aggregations : {
_timeLine : {type : "sap.ui.core.HTML", multiple: false, visibility : "visible"}
},
events : {
change : {
parameters : {
value : {type : "int"}
}
}
}
} ,
init : function () {
this.setAggregation("_timeLine", new HTML({
content : "<svg id="+this.getId()+"--timeLine></svg>"
}));
},
renderer : function (oRM, oControl) {
oRM.write("<div");
oRM.writeControlData(oControl);
oRM.writeClasses();
oRM.addStyle("height",oControl.getHeight());
oRM.addStyle("width",oControl.getWidth());
oRM.writeStyles();
oRM.write(">");
oRM.renderControl(oControl.getAggregation("_timeLine"));
oRM.write("</div>");
}
});
});
看起来像这样
如何使两者在同一高度?为什么网格布局没有达到相同的高度? 我需要使用其他布局吗?
答案 0 :(得分:0)
Panel
只会占用父容器中所需的空间而留下一些空白空间,它不会占用整个可用空间。
因此,要强制占据剩余空间,您需要明确设置它的高度。
将Panel
的高度设置为TreeTable
的高度。
查看代码
<table:TreeTable id="table">
考虑oTable
是您的TreeTable
对象而oPanel
是Panel
对象。
onAfterRendering: function(){
var oTable = this.getView().byId("table");
var tableHeight = $(oTable.getDomRef()).height();
oPanel.setHeight(tableHeight + "px");
}